在malloc之后的memset

时间:2011-06-29 16:08:58

标签: c linux memory malloc memset

我有三行(版本)的linux产品。 V1在客户中运行良好。 V2和V3 在malloc调用之后,崩溃并且修复似乎是一个memset调用。

关于这个主题的更深层次的解释是什么?为什么memset解决了这个问题?

2 个答案:

答案 0 :(得分:3)

我没有代码示例的猜测是你在缓冲区或结构上运行malloc'd假设其内容将使用某些默认值进行初始化。 Malloc没有初始化它所支持的内存,所以除非你进行memset或使用其他初始化,否则该内存中的值可能是任何值,因此,如果你试图检查指针,假设它是NULL或者那么如果没有初始化内存,那么int就会为零。

答案 1 :(得分:2)

可能是因为分配的缓冲区归零是错误的。因此,例如,如果缓冲区包含字符串并在初始化之前在某处打印,则可能导致访问冲突。将缓冲区清零会解决这个问题。