中易网

为什么malloc在gcc中将值初始化为 0

答案:1  悬赏:40  
解决时间 2021-01-13 12:57
  • 提问者网友:人生佛魔见
  • 2021-01-12 16:28
为什么malloc在gcc中将值初始化为 0
最佳答案
  • 二级知识专家网友:平生事
  • 2021-01-12 17:01
调用 malloc() 时,会发生以下两种情况之一:
它回收以前分配的内存,并从同一个进程释放。
它从操作系统请求新页面。
在第一种情况下,内存将包含以前分配的剩余数据。 所以它不会是零。 这是执行小分配时常见的情况。
在第二个案例中,内存将来自操作系统。 当程序内存不足或者当你请求非常大的分配时,会发生这种情况。 ( 就像你的示例中所示)
这是捕获:记忆来自操作系统将瞄准安全原因。*
当操作系统给你内存时,它可能会从另一个进程中释放出来。 这样内存就可以包含敏感信息,比如密码。 因此,为了防止你读取此类数据,操作系统将在它给你之前将它的清零。
*I 注意到,标准没有提到这个。 这是严格的操作系统行为。 因此,这个降级可能或者可能不存在于系统中的安全问题。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息