malloc不能保证返回 0'ed 内存。传统观点不仅如此,而且内存malloc返回的内容实际上是非确定性的,例如openssl 将它们用于额外的随机性。
然而,据我所知,malloc建立在brk/sbrk之上,它“返回”0'ed内存。我可以看到为什么malloc返回的内容可能是非 0,例如来自以前释放的内存,但为什么它们在“普通”单线程软件中是不确定的?
- 传统智慧真的是真的吗(假设相同的二进制文件和库)
- 如果是这样,为什么?
编辑有几个人回答解释了为什么内存可以为非0,我已经在上面的问题中解释过。我要问的是为什么使用 malloc 返回的内容的程序可能是不确定的,即为什么它每次运行时都会有不同的行为(假设相同的二进制文件和库)。非 0 不暗示非确定性行为。换一种说法:为什么每次运行二进制文件时它都有不同的内容。