В моих первых маленьких фиктивных приложениях (для практики во время обучения) я столкнулся с большим количеством EXC_BAD_ACCESS
, что каким-то образом научило меня Bad-Access: вы касаетесь/Доступ к объекту, которого вы не должны, потому что либо он еще не выделено или освобождено или просто у вас нет доступа к нему.
Посмотрите на этот пример кода, который имеет проблему с плохим доступом, потому что я пытаюсь изменить const
:
-(void)myStartMethod{
NSString *str = @"testing";
const char *charStr = [str UTF8String];
charStr[4] = '\0'; // bad access on this line.
NSLog(@"%s",charStr);
}
В то время как ошибка сегментации говорит: Ошибка сегментации - это определенная ошибка, вызванная доступом к памяти, которая "не принадлежит вам". Это вспомогательный механизм, который мешает вам разлагать память и вводить жесткие ошибки памяти. Всякий раз, когда вы получаете segfault, вы знаете, что делаете что-то неправильно с памятью (подробнее здесь.
Я хочу знать две вещи.
Один, я прав о objective-C EXC_BAD_ACCESS
? Правильно ли я понимаю?
Второй, Есть EXC_BAD_ACCESS and Segmentation fault
то же самое, и Apple просто импровизирует его имя?