我编写了一个小的hello world程序,并在其二进制文件上运行strace,它列出了在执行Hello_world程序时已调用的所有系统调用。
strace ./a.out
execve("./a.out", ["./a.out"], [/* 40 vars */]) = 0
brk(NULL) = 0xb7d000
brk(NULL)用于查找当前DSS的上限,但是我的问题是,谁想知道这以及为什么?
edit1:我的程序中没有malloc
答案 0 :(得分:1)
答案 1 :(得分:1)
无论您是否使用malloc()
,C运行时库很可能都会准备堆。为此,它查询DSS的当前大小并适当地设置控制结构,以便能够在调用第一个malloc()
时立即采取行动。