C/C ++ Неопределенные значения: Оптимизация компилятора дает различный выход (пример)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C/C ++ Неопределенные значения: Оптимизация компилятора дает различный выход (пример)

Сообщение Anonymous »

кажется, что компилятор C/C ++ (Clang, GCC и т. Д.) Производит разные выходные данные, связанные с уровнем оптимизации. Вы также можете проверить онлайн -ссылку, включенную в этот пост. < /p>

http://cpp.sh/5vrmv (изменить вывод от NONE на -O3, чтобы увидеть различия). < /p>

На основе следующего фрагмента кода может кто -то объяснить несколько вопросов, которые у меня есть: < /p>

#include
#include

int main(void) {

int *p = (int *)malloc(sizeof(int));
free(p);
int *q = (int *)malloc(sizeof(int));
if (p == q) {
*p = 10;
*q = 14;
printf("%d", *p);
}
return 0;
}
< /code>


Я уверен, что выполнение всегда попадет в оператор IF? Откуда мы узнаем, что адреса двух указателей, P и Q, будут одинаковыми?>

Подробнее здесь: https://stackoverflow.com/questions/357 ... put-exampl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»