Неинициализированная структура C ++ в разных операционных системах - PullRequest
0 голосов
/ 28 августа 2010

У нас есть приложение, написанное на VC ++ с использованием Visual Studio 2005, которое поддерживает несколько операционных систем, таких как Windows XP, Windows 2008, Windows 2003. Большую часть времени серверная часть приложения устанавливается в Windows 2003 / Windows 2008 иКлиентская часть устанавливается на Windows XP.Клиент и сервер взаимодействуют через именованные каналы.

На стороне клиента мы создали структуру C ++ и отправили ее на сервер в виде сообщения IPC.Когда мы объявляем structre в функции и не инициализируем ее, она достигает сервера от некоторых клиентов, в то время как от других клиентов этого не происходит.Клиенты устанавливаются на разных компьютерах с Windows XP.

Теперь, если я вызову функцию ZeroMemory() для этой структуры и инициализирую ее нулем, сообщение IPC достигнет сервера от всех клиентов.Вопрос в том, почему унитарная структура работает на одной машине, а не на другой?Мне очень интересно, как операционные системы автоматически инициализируют неинициализированные структуры.

1 Ответ

1 голос
/ 28 августа 2010

Неинициализированные структуры не инициализируются ОС.У их членов есть все значения, которые находятся в памяти в это время.

Попытка сделать что-то с неинициализированной памятью может привести к непредсказуемым результатам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...