记忆可以在破发点之后使用吗?

时间:2016-08-29 22:32:03

标签: c segmentation-fault

怎么运作

$lookup

但当我删除brk(p + 1);它导致段错误?我也尝试删除第一个* p = x;在第一个p ++之前;我也试过brk(p-1),这导致了一个段错误。到底发生了什么?如果我只做brk(p + 1),怎么能控制所有的记忆?但是,如果我不这样做,就会陷入错误。

1 个答案:

答案 0 :(得分:5)

brk()sbrk()以页面大小的部分分配内存。所以brk(p+1)分配一个全新的页面,即使你要求一个字节。因此,您编写的几个字节很容易适合您刚刚分配的页面,并且您不会出现段错误。