【发布时间】:2011-09-21 17:39:02
【问题描述】:
我刚刚执行了一个在 12 MB 机器中 malloc 13 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);
}
这怎么可能?我期待一个分段错误。
【问题讨论】:
-
哇!刚刚意识到forloop中的代码是错误的......仍然仍然......!为什么没有段错误?
标签: c++ c memory-management malloc