LINUX.ORG.RU

История изменений

Исправление hateyoufeel, (текущая версия) :

Ну вот мусор в указателе – это пример «erroneous data» как раз.

Не уверен. У указателей в C есть такая штука как provenance, то есть все указатели должны изначально создаваться при наличии существующих корректных объектов. Т.е. если ты сделал что-то типа void *p = rand();, то это ошибочный код уже сам по себе.

Если у тебя интерпретатор, в котором все указатели фейковые, а не «железные», то он может на этот случай вызвать abort().

А если это типичный компилятор типа gcc, который выдаёт «настоящий» машинный код для «портабельного ассемблера», то извини, вот тебе UB по морде.

Вообще не вижу разницы. Почему в случае с GCC дефолтным значением неинициализированного указателя не может быть trap representation, вызывающий abort() при разыменовании? Это явно не добавит тормозов корректному коду вообще никак.

Исправление hateyoufeel, :

Ну вот мусор в указателе – это пример «erroneous data» как раз.

Не уверен. У указателей в C есть такая штука как provenance, то есть все указатели должны изначально создаваться при наличии существующих корректных объектов. Т.е. если ты сделал что-то типа void *p = rand();, то это ошибочный код уже сам по себе.

Если у тебя интерпретатор, в котором все указатели фейковые, а не «железные», то он может на этот случай вызвать abort().

А если это типичный компилятор типа gcc, который выдаёт «настоящий» машинный код для «портабельного ассемблера», то извини, вот тебе UB по морде.

Вообще не вижу разницы. Почему в случае с GCC дефолтным значением неинициализированного указателя не может быть trap representation, вызывающий abort()? Это явно не добавит тормозов корректному коду вообще никак.

Исходная версия hateyoufeel, :

Ну вот мусор в указателе – это пример «erroneous data» как раз.

Не уверен. У указателей в C есть такая штука как provenance, то есть все указатели должны изначально создаваться при наличии существующих корректных объектов. Т.е. если ты сделал что-то типа void *p = rand();, то это ошибочный код уже сам по себе.

Если у тебя интерпретатор, в котором все указатели фейковые, а не «железные», то он может на этот случай вызвать abort().

А если это типичный компилятор типа gcc, который выдаёт «настоящий» машинный код для «портабельного ассемблера», то извини, вот тебе UB по морде.

Вообще не вижу разницы. Почему в случае с GCC дефолтным значением неинициализированного указателя не может быть trap representation, вызывающий abort()?