Я использую Xcode с Clang в качестве компилятора, и в настоящее время я получаю EXC_BAD_ACCESS при вызове функции для указателя, адрес которого 0xCDCDCDCD
, Я также видел некоторые переменные, установленные в 0xABABABAB
вокруг. Я оглянулся и заметил, что эти значения используются в Visual Studio как магические числа, чтобы понять, в чем проблема. Однако я не могу найти список магических чисел, используемых XCode (или Clang, не уверен, что это механизм из компилятора или IDE). Кто-нибудь знает, где я могу найти один?
Я не знаю ни одного исчерпывающего списка, который, кажется, то, что вы ищете, но 0xCDCDCDCD
обычно используется средой выполнения C, когда вы выделяете блок памяти при сборке Debug.
Я не знаю ни одного такого списка, кроме Википедия «Волшебное значение отладки» список который перечисляет различные магические числа, используемые при отладке.
Как сказал Майк выше, скорее всего, указатели инициализируются по неверному адресу памяти в вашей отладочной сборке, чтобы упростить отлов потенциальных ошибок, связанных с указателями.
Это функция компилятора или среды выполнения, но точное значение, для которого они инициализируются, не должно иметь значения, поскольку эта функция упрощает отладку указателей. EXC_BAD_ADDRESS
это просто результат попыток выполнить действия с нераспределенной памятью и, по сути, ожидаемое поведение.
Числа используются в качестве магических чисел в Visual Studio, вероятно, именно по той причине, что они могут использоваться для поиска неинициализированных указателей при запуске скомпилированных программ.