c - 为什么 free() 在释放内存之前不将其清零?

标签 c security memory-management

当我们在 C 中free() 内存时,为什么内存没有被零填充?有没有什么好的方法可以确保在调用 free() 时理所当然地发生这种情况?

我宁愿不冒险将内存中的敏感数据释放回操作系统...

最佳答案

释放内存块时将内存块清零将需要额外的时间。由于大多数时候实际上不需要它,因此默认情况下不会完成。

如果您真的需要(比如您使用内存来存储密码或加密 key )- 在释放 block 之前调用 memset()。编写链接 memset()free() 的实用函数也不是问题。

关于c - 为什么 free() 在释放内存之前不将其清零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1287180/

相关文章:

c - 我的 C 程序以非零状态退出,我不知道为什么。目前正在 repl.it 中运行代码

c++ - 如何确保编译器优化不会带来安全风险?

c - 这个静态分配的结构数据如何在函数外部可用?

c++ - 为什么不总是在堆栈上实例化对象? C++

objective-c - 减少具有大量自动释放变量的函数的内存占用?

c - 关于实用程序 'df' 中的库 <libutil.h>,Linux

c++ - 如何在 C/CPP 中更改文件名和 ext

c - 如何将字符串传递给链表而不是 C 中的字符数组?

ios - NSCurl ATS 工作,IOS 9 不工作

php - Zend Framework 管理模块结构