Запись в указатель за пределами границ после malloc () не вызывает ошибки

когда я пробую приведенный ниже код, он работает нормально. Я что-то упустил?

main()
{
    int *p;
    p=malloc(sizeof(int));
    printf("size of p=%d\n",sizeof(p));
    p[500]=999999;
    printf("p[0]=%d",p[500]);
    return 0;
}

Я пробовал использовать malloc (0 * sizeof (int)) или что-то еще, но все работает нормально. Программа вылетает только тогда, когда я вообще не использую malloc. Таким образом, даже если я выделю 0 памяти для массива p, он все равно будет правильно хранить значения. Так почему же тогда я вообще возился с malloc?

6
задан marcog 26 December 2010 в 17:47
поделиться