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

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