реклама на сайте
подробности

 
 
> malloc и free
Turnaev Sergey
сообщение Aug 2 2010, 11:43
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 562
Регистрация: 25-07-06
Из: Зеленоград, Новосибирск
Пользователь №: 19 088



Имеется ли разница в последовательности вызовов malloc и free?

p1 = malloc(...);
p2 = malloc(...);

free(p1);
free(p2);

В программе утечек памяти нет. Все вызовы malloc-free комплементарны (проверено переопределением malloc-free)
что free не применяется дважды к одной и той же области памяти , realloc проверен на предмет применения
к левым областям памяти - всё нормально. smile3046.gif


но некоторые из завершающих free выдают ошибку разрушения кучи (heap). Что может быть не так??? unsure.gif


--------------------
"Отсутствие вашей судимости - это не ваша заслуга, а наша недоработка."
Ф.Дзержинский.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Ink
сообщение Aug 3 2010, 07:18
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 14-08-07
Пользователь №: 29 776



Если это ошибка разрушения кучи - вы пишите мимо выделенных областей, затирая служебную информацию. Но это и так ясно.
Как можно найти место: переопределяете malloc и free макросами, которые вызывают нормальные функции и тоже пишут в консоль сообщение и номер строки. После вылета увидите последнее действие, ищите где-то рядом.

А нельзя запустить прогу в дебаггере студии? Там было бы видно, что где, по call-stack.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th August 2025 - 17:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016