Рассмотрим приведенный ниже фрагмент кода:
#include <stdio.h>
int main()
{
int p = malloc( sizeof( int ) );
return 0;
}
Приведенная выше программа успешно компилируется без каких-либо предупреждений.
Разве это не должно выдавать ошибку/предупреждение, поскольку адрес фрагмента памяти хранится в integer variable
, а не в указателе?
Изначально я думал, что поведение странное, потому что я забыл включить stdlib
. Вскоре мое предположение рухнуло. Поведение такое же, даже после включения stdlib
.
См. приведенную ниже программу после включения stdlib
#include <stdio.h>
#include <stdlib.h>
int main()
{
int p = malloc( sizeof( int ) );
return 0;
}
Эта программа также ведет себя похожим образом.
Почему он успешно компилируется?
-pedantic -Wall -Wextra
. - person Kerrek SB   schedule 16.09.2012