【发布时间】:2012-09-04 08:59:44
【问题描述】:
可能重复:
Invalid read/write sometimes creates segmentation fault and sometimes does not
我正在用 malloc 做一些实验,并在 linux m/c 上编写了这个非常小的程序:
int main(){
int *p=NULL;
p = (int *)malloc(10);
*(p + 33*1000) = 5;
free(p);
return 0;
}
这个程序没有给出分段错误但是如果我把第 5 行改成这个 *(p + 34*1000) = 5; 然后它给出了分段错误。在我的系统上,页面大小为 4K。
我无法解释为什么它在 p 之后在大约 128Kb(34*1000 大约是 128K)处给出分段错误。
如果有人能从 linux 内存管理的角度来解释这一点,那就太好了。
【问题讨论】:
标签: c memory memory-management malloc