Я пытаюсь понять, в чем преимущества безопасности типа. Но я чем-то смущен.Смутно о преимуществах безопасности типа
Основываясь на моем понимании безопасности типа, безопасность типов предотвращает смешивание несовместимых типов данных. Например, вы не можете назначить char*
Ань int*
:
char c = 'a';
int *p = &c; // this is not allowed (compiler error)
Теперь я предполагаю, что выгода не позволяет такого назначения, потому что если бы я попытался разыменованием p
я получить доступ к 3 дополнительных байт, что я не разрешен доступ.
Но в C++ я позволил сделать следующее:
int *p; // I don't have to initialize p, and so it will have some junk/random value
*p = 12345; // this will probably lead to segmentation fault!
Так в основном в последнем примере я позволил сделать поведение, безопасность типа пытается предотвратить в первом примере! Я что-то упустил ?!
Ваш второй пример раскрывает неопределенное поведение, не имеет ничего общего с безопасностью типа. –
Ваш второй пример отменяет неинициализированный указатель. Это неопределенное поведение, так как 'p' указывает на произвольную ячейку памяти. – wulfgarpro
Возможный дубликат [Ошибка сегментации при попытке печати значения в C] (http://stackoverflow.com/questions/11278085/segmentation-fault-when-attempting-to-print-value-in-c) – wulfgarpro