Malloc выделяет память больше, чем оперативная память

Я только что выполнил программу, которая mallocs 13 MB в 12 MB машине (QEMU Emulated!) . И не только это, я даже просмотрел память и заполнил ее мусор....

void 
large_mem(void) 
{
  #define LONGMEM  13631488
  long long *ptr = (long long *)malloc(LONGMEM);
  long long i;
  if(!ptr) {
     printf("%s(): array allocation of size %lld failed.\n",__func__,LONGMEM);
     ASSERT(0);
  }
  for(i = 0 ; i < LONGMEM ; i++ ) { 
    *(ptr+i)=i;
  }
  free(ptr);
}

Как это возможно? Я ожидал ошибки сегментации.

6
задан raj 21 September 2011 в 17:39
поделиться