ошибка для объекта 0xb50dd20: двойной свободный

Кто-нибудь знаком с проблемой. Я прочитал это сообщение, однако мне трудно предоставить код, когда Понятия не имею, где в коде возникает ошибка. У кого-нибудь есть идеи?

Имя (9369,0xa09cd500) malloc: * ошибка для объекта 0xb50dd20: double free * установить точку останова в malloc_error_break для отладки


person TheLearner    schedule 02.11.2010    source источник


Ответы (2)


Делайте так, как вам говорит отладчик: установите точку останова на malloc_error_break.

Выполнить → Управление точками останова → Добавить символическую точку останова.

person zoul    schedule 02.11.2010
comment
Я пришел из среды .NET - я сделал, как вы говорите, но он запрашивает имя точки останова? - person TheLearner; 02.11.2010
comment
Это странно. У вас включены точки останова? (Работает ли обычная точка останова где-нибудь в коде?) Кажется, в вашем коде есть несколько ручных free вызовов. Если их не слишком много, вы можете установить для них обычную точку останова или оператор записи в журнал и посмотреть, кто из них является виновником. - person zoul; 02.11.2010
comment
Мне удалось заставить его сломаться на malloc_error_break, но он мне ни о чем не говорит. Как мне настроить запись в журнал, чтобы узнать, кто виноват? - person TheLearner; 02.11.2010
comment
Если вы получили прерывание на malloc_error_break, вы сможете перемещаться по стеку в отладчике Xcode, чтобы увидеть вызов, который делает это. - person zoul; 02.11.2010
comment
Я понимаю, что вы говорите, но это просто столбцы букв и цифр - на самом деле это не мой код - person TheLearner; 02.11.2010
comment
Мне не удалось отладить, но я нашел проблему, пройдя все мои методы выпуска и распределения - person TheLearner; 02.11.2010
comment
К вашему сведению, вам нужно будет подняться в трассировке стека (левый столбец отладчика), пока не дойдете до вызова метода, который вы узнали. Это должно сказать вам, где ошибка. рад, что ты починил. - person Stephen Furlani; 02.11.2010
comment
Я был ужасно испорчен .NET и Visual Studio - это кошмар отладки в Xcode! - person TheLearner; 03.11.2010
comment
В Xcode 4.3.2 точки останова можно найти в Вид → Навигаторы → Показать навигатор точек останова или ⌘6 (Cmd-6) - person Andreas Ley; 15.05.2012

Вы освободили объект, за который не несете ответственности ...
на эту тему было много веток.

Подводя итог, вы должны освободить (или автоматически выпустить) только объект, который у вас есть, сохранить или скопировать.

person Benoît    schedule 02.11.2010