我剛剛執行了一個程序,在12 MB計算機(QEMU仿真!)中分配13 MB的malloc。不僅如此,我甚至通過內存瀏覽並填充垃圾...Malloc分配內存超過RAM
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);
}
這怎麼可能?我期待分段錯誤。
哇!只是意識到forloop內部的代碼是錯誤的......仍然仍然...!爲什麼沒有seg故障? – raj