кажется, что компилятор 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