Visual c++ 未初始化的C++;不同操作系统上的结构

Visual c++ 未初始化的C++;不同操作系统上的结构,visual-c++,Visual C++,我们有一个应用程序,它是用VC++编写的 Visual studio 2005,支持多种操作系统,如Windows XP、Windows 2008、Windows 2003。大多数情况下,应用程序的服务器部分安装在Windows 2003/Windows 2008上,客户端部分安装在Windows XP上。客户端和服务器通过命名管道进行通信 在客户端,我们创建了C++结构,并将其作为IPC消息发布到服务器。当我们在函数中声明structure而不初始化它时,它会从一些客户端到达服务器,而不会从其

我们有一个应用程序,它是用VC++编写的 Visual studio 2005,支持多种操作系统,如Windows XP、Windows 2008、Windows 2003。大多数情况下,应用程序的服务器部分安装在Windows 2003/Windows 2008上,客户端部分安装在Windows XP上。客户端和服务器通过命名管道进行通信

在客户端,我们创建了C++结构,并将其作为IPC消息发布到服务器。当我们在函数中声明structure而不初始化它时,它会从一些客户端到达服务器,而不会从其他客户端发生。客户端安装在不同的Windows XP计算机上

现在,如果我调用该结构上的
ZeroMemory()
函数并将其初始化为零,IPC消息将从所有客户端到达服务器


我的问题是,为什么unitialzied Structure在某些机器上工作而在其他机器上不工作?我很好奇未初始化的结构是如何被操作系统自动初始化的。

未初始化的结构不会被操作系统初始化。他们的成员拥有此时内存中碰巧存在的任何值


尝试使用未初始化的内存执行某些操作可能会导致不可预知的结果。

发布一些代码。你不能期望在没有调用ub的情况下对未初始化的结构做任何事情。@ SANDeave:注意,C++是这样工作的,对操作系统没有什么特殊性。始终初始化您的值,除非您知道它们没有被使用,或者将由您传递给它们的代码初始化。