在linux中,malloc给你的数据是什么?

fel*_*lix 1 linux malloc glibc

当你在linux中使用malloc内存时,不能保证根据规范将其归零.那么你得到的数据呢?

Sne*_*tel 5

你得到"无论如何".如果该进程先前已经分配并释放了内存,那么它通常至少会部分地填充旧内容.有时,内存中会充满垃圾,以使bug更加明显.你不会得到的,是一些其他过程的旧数据; 这将是一个潜在的安全漏洞.

  • glibc不会为你做这件事(虽然它确实有一个可以手动启用的调试模式,这肯定会减慢速度).程序员通常会使用`malloc()`的不同实现来获得这种行为.顺便说一下,它并没有太大的性能影响 - 将大量字节设置为相同的值是处理器可以做的事情*非常,非常快*. (2认同)
  • 如果你对这些东西感兴趣,那么`malloc()`的源代码当然是可用的,而(IIRC)它实际上并不难理解. (2认同)