Запитання з тегом «free»

17
Що дійсно трапляється, коли ти не звільняєшся після молотка?
Це було щось, що хвилює мене вже віками. У нас усіх навчають у школі (принаймні, я був), що Ви ОБОВ'ЯЗКОВО звільняєте кожен покажчик, який виділяється. Мені дещо цікаво, що стосується реальної вартості не звільнення пам'яті. У деяких очевидних випадках, наприклад, коли mallocвикликається всередині циклу або частина виконання потоку, дуже важливо …
538 c  malloc  free 

11
Як безкоштовний знає, скільки безкоштовно?
У програмуванні на C ви можете безкоштовно передавати будь-який вказівник, який вам подобається як аргумент, як він може знати розмір виділеної пам'яті, щоб звільнити? Щоразу, коли я передаю вказівник на якусь функцію, я також повинен передавати розмір (тобто масив з 10 елементів повинен отримувати 10 як параметр, щоб знати розмір …
384 c  size  pointers  free 

13
Як працюють malloc () та free ()?
Я хочу знати, як mallocі як freeпрацювати. int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout << p; return 0; } Я був би дуже вдячний, …

23
Встановлення змінної на NULL після безкоштовного
У моїй компанії є правило кодування, яке говорить, звільнивши будь-яку пам'ять, скинути змінну до NULL. Наприклад ... void some_func () { int *nPtr; nPtr = malloc (100); free (nPtr); nPtr = NULL; return; } Я вважаю, що у таких випадках, як код, показаний вище, встановлення NULLзначення не має жодного значення. …

10
Чи вільний (ptr), де ptr - NULL пошкоджена пам'ять?
Теоретично я можу це сказати free(ptr); free(ptr); це пошкодження пам’яті, оскільки ми звільняємо вже звільнену пам’ять. Але що робити, якщо free(ptr); ptr=NULL; free(ptr); Оскільки ОС буде вести себе невизначено, я не можу отримати фактичний теоретичний аналіз цього щодо того, що відбувається. Що б я не робив, це пошкодження пам’яті чи …

8
Як відстежити помилку "подвійний вільний або корупційний"
Коли я запускаю свою програму (C ++), вона виходить з ладу з цією помилкою. * виявлено glibc * ./load: подвійна безкоштовна або корупція (! попередня): 0x0000000000c6ed50 *** Як я можу виявити помилку? Я спробував використовувати std::coutоператори print ( ), але безуспішно. Чи може gdbце полегшити?
94 c++  c  debugging  free 

12
Чому `free` у C не бере кількість байтів, які потрібно звільнити?
Щоб зрозуміти: я знаю це mallocі freeреалізовано в бібліотеці C, яка зазвичай виділяє фрагменти пам’яті з ОС та здійснює власне управління для парцеляції менших обсягів пам’яті додатку та відстежує кількість виділених байтів . Це питання не в тому, як безкоштовні знають, скільки безкоштовно . Швидше, я хочу знати, чому взагалі …

3
Чому повернути значення, що повертається безкоштовно, недійсне?
Я читаю книгу ( Програмування з POSIX Threads від Butenhof, 1997), яка використовує C, і я натрапив на наступний рядок: (void)free(data); Ось dataлише вказівник на виділену структуру, data = malloc(sizeof(my_struct_t)); Чому результат freeкинуто void? З мого розуміння С, це, мабуть, не має сенсу з двох причин: Безкоштовна функція вже повертається …
82 c  casting  free  void  legacy-code 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.