NSSetUncaughtExceptionHandler не фиксируют все ошибки на iPhone

От C++ FQA, Облегченный :

[16.4], Почему я должен использовать новый вместо защищенного старого malloc ()?

FAQ: новый/удаленный вызов конструктор/деструктор; новый безопасно с точки зрения типов, malloc не; новый может быть переопределен классом.

FQA: достоинства новых, упомянутых FAQ, не являются достоинствами, потому что конструкторы, деструкторы и перегрузка оператора являются мусором (см. то, что происходит, когда у Вас нет сборки "мусора"?), и проблема безопасности типов является действительно крошечным здесь (обычно, необходимо бросить пустоту* возвращенный malloc к правильному типу указателя для присвоения ее введенной переменной указателя, которая может быть раздражающей, но совсем не "небезопасной").

, О, и использование защищенного старого malloc позволяет использовать одинаково защищенный & старое перевыделение. Слишком плохо у нас нет новейшего оператора, возобновляют или что-то.

однако, новый не достаточно плохо для выравнивания по ширине отклонения от общего стиля, используемого всюду по языку, даже когда язык является C++. В частности, классы с нетривиальными конструкторами будут неправильно себя вести фатальными способами если Вы просто malloc объекты. Итак, почему бы не использовать новый всюду по коду? Люди редко перегружают новый оператор, таким образом, он, вероятно, не войдет Ваш слишком очень. И если они действительно перегружаются новый, можно всегда просить, чтобы они остановились.

Извините, я просто не мог сопротивляться.:)

9
задан mamcx 14 July 2009 в 22:57
поделиться

1 ответ

EXC_BAD_ACCESS не генерирует исключение, а генерирует сигнал (SIGSEGV). Чтобы его поймать, вам понадобится обработчик сигнала. Кристофер Атлан написал хорошее объяснение того, как справляться с обоими видами сбоев. Обязательно прочтите как часть 1 , так и часть 2 .

20
ответ дан 4 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: