Как найти, что причина malloc “удваивает бесплатную” ошибку?

Атрибут «id» назначает идентификатор для ассоциированного элемента. Этот идентификатор должен быть уникальным в документе и может использоваться для ссылки на этот элемент.

проверьте ссылки ниже

http://www.htmlquick.com/reference/tags/div.html

80
задан Cœur 13 October 2017 в 05:21
поделиться

6 ответов

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

Самый простой способ установить точку останова - это:

  1. Перейти к выполнению -> Показать -> Точки останова ( ALT - Команда - B )
  2. Прокрутите список до конца и добавьте символ malloc_error_break
37
ответ дан 24 November 2019 в 09:59
поделиться

В Xcode щелкните слева от номера строки, чтобы установить точку останова. Затем вы можете запустить его, выполнив «Сборку и отладку».

Рекомендуется, чтобы создаваемый вами объект не был автозапуском , поскольку память на iPhone является обычным делом. Apple рекомендует явно вызывать выпуск .

0
ответ дан 24 November 2019 в 09:59
поделиться

Откройте консоль отладчика, нажав Cmd + Shift + R. Там введите

break malloc_error_break

, чтобы установить точку останова в начале функции malloc_error_break .

Если вы хотите узнать, какой объект расположен по адресу 0x1068310, вы можете ввести следующее в консоли отладчика :

print-object 0x1068310

Конечно, вы должны делать это, пока объект еще жив - если объект уже был освобожден к тому времени, когда вы это сделаете, то это не сработает.

9
ответ дан 24 November 2019 в 09:59
поделиться

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

Я обнаружил, что лучший способ отследить дополнительный выпуск - использовать переменную среды NSZombieEnabled для затронутого исполняемого файла в Xcode. Краткое изложение того, как его использовать, можно найти на этой вики-странице CocoaDev . (В дополнение к этой странице Apple задокументировала несколько невероятно непонятных, но полезных советов по отладке кода в Xcode, некоторые из которых спасли меня более чем несколько раз. Я предлагаю проверить эту Техническую заметку для разработчиков .apple.com - ссылка переходит в раздел, посвященный структуре Cocoa Foundation).

Изменить: Вы часто можете отследить объект-нарушитель в отладчике Xcode, но часто это намного проще, если вы используете инструменты, чтобы помочь вам. В Xcode выберите Выполнить → Начать с инструментом производительности → Размещение объектов , и вы сможете отследить объект-нарушитель до того места, где он был создан. (Это будет работать лучше всего, если вы включите зомби, как описано выше.) Примечание: Snow Leopard добавляет инструмент «Зомби» в Инструменты, доступный также из меню «Выполнить». Может стоить только 29 долларов! ; -)

Здесь также есть вопрос SO .

выберите Выполнить → Начать с инструментом повышения производительности → Размещение объектов , и вы сможете отследить объект-нарушитель до того места, где он был создан. (Это будет работать лучше всего, если вы включите зомби, как описано выше.) Примечание: Snow Leopard добавляет инструмент «Зомби» в Инструменты, доступный также из меню «Выполнить». Может стоить только 29 долларов! ; -)

Здесь также есть вопрос SO .

выберите Выполнить → Начать с инструментом повышения производительности → Размещение объектов , и вы сможете отследить объект-нарушитель до того места, где он был создан. (Это будет работать лучше всего, если вы включите зомби, как описано выше.) Примечание: Snow Leopard добавляет инструмент «Зомби» в Инструменты, доступный также из меню «Выполнить». Может стоить только 29 долларов! ; -)

Здесь также есть вопрос SO .

45
ответ дан 24 November 2019 в 09:59
поделиться

Чтобы найти такого рода проблемы с памятью и указателями в целом, вы хотите запустить свой код с помощью средства проверки ошибок памяти во время выполнения, например Valgrind . Это должно указывать на множество вещей, которые делает ваш код неправильно, помимо тех, которые вызывают его сбой.

Valgrind может работать на OSX (хотя он говорит, что он «не поддерживается, неполный и содержит ошибки»). ), и после небольшого взлома кто-то заставил его работать с исполняемыми файлами iPhone SDK .

Еще лучше вы можете попробовать Instruments, который является частью XCode. Здесь есть руководство по его запуску .

0
ответ дан 24 November 2019 в 09:59
поделиться

Один из способов - использовать объект переменных js, который записывается в верхней части каждой страницы. Затем ваш внешний js может ссылаться на объект настройки с желаемым свойством. Таким образом, вы можете изменить идентификатор на своих страницах aspx без жесткого кодирования чего-либо во внешних файлах js.

Затем вы можете открыть метод materpage или base page, который позволяет каждой странице добавлять элементы идентификатора элемента управления в список. Затем базовый метод должен записать сценарий pageVars в верхней части каждой страницы.

Рик Стрел говорит об этом здесь

Я предпочитаю этот метод, поскольку вы по-прежнему получаете преимущества быстрых селекторов.

1255] Например,

Если у вас есть aspx, напишите следующий скрипт. Необходимо установить флажки, чтобы заставить его работать.

alt text http://www.martijnthe.nl/wp-content/uploads/2009/08/Afbeelding-1.png[1260pting

3
ответ дан 24 November 2019 в 09:59
поделиться