怎么运作
$lookup
但当我删除brk(p + 1);它导致段错误?我也尝试删除第一个* p = x;在第一个p ++之前;我也试过brk(p-1),这导致了一个段错误。到底发生了什么?如果我只做brk(p + 1),怎么能控制所有的记忆?但是,如果我不这样做,就会陷入错误。
答案 0 :(得分:5)
brk()
和sbrk()
以页面大小的部分分配内存。所以brk(p+1)
分配一个全新的页面,即使你要求一个字节。因此,您编写的几个字节很容易适合您刚刚分配的页面,并且您不会出现段错误。