c++ - 我应该将分配的内存归零吗?

标签 c++ linux windows memory

我正在编程 tcp 套接字,我正在使用 struct sockaddr_in server_addr; 来设置端口等。在一些教程中我读到我应该将 server_addr 的内存清零在使用它之前。我是不是该?是否有可能我会得到一些可能导致问题的数据的内存? linux 和 windows 有什么不同吗?

谢谢

最佳答案

如果您不初始化保留内存区域,它将包含之前存储在那里的任何值。因此,将其“归零”始终是一个好主意,这意味着用一些值覆盖曾经存在的内容,在本例中为空字节 \0

如果您将 malloc 替换为 calloc,这将自动为您完成。

无论您是否这样做,都不会影响您从套接字读取的值。

如果您在 Windows 或 Linux/Unix 上执行此操作并不重要:这是所有环境的常见行为。

关于c++ - 我应该将分配的内存归零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30682978/

相关文章:

c++ - 初始化所有结构体成员

c++ - async_write 中的操作取消错误

linux - 记录内存访问足迹

windows - wxPython 在 Windows 和 Ubuntu 上给出不同的结果

javascript - Windows是否有等效的nodemon

c++ - 当我按 Ctrl + C 时,为什么会收到字符代码为 3 的 WM_CHAR 消息?

c++ - 如何以非递归形式重写此函数?

c++ - 如何仅使用 std::filebuf 将数据(二进制模式)写入文件?

linux - 如何在 bash 脚本中使用 'history-c' 命令?

linux - 如何在linux终端下自己的程序中实现apt-get花式进度条?