gpt4 book ai didi

c++ - sizeof 在编译不同的程序时为结构返回不同的值

转载 作者:IT王子 更新时间:2023-10-29 00:47:19 25 4
gpt4 key购买 nike

我有 2 个程序共享一个头文件。这个头文件定义了一个包含几个成员的结构。然后是#define:#define STRUCTURE_SIZE sizeof(OUR_STRUCTURE)

此结构然后在共享内存中使用,STRUCTURE_SIZE 用于 shmget()size 参数。

不幸的是,对于一个程序,STRUCTURE_SIZE 最终为 20758,而在另一个程序中,它最终为 20764。因此当第二个程序尝试获取共享内存时,shmget()返回 EINVAL。

uname -a:

Linux 机器 2.6.30.10-105.2.23.fc11.i686.PAE #1 SMP Thu Feb 11 07:05:37 UTC 2010 i686 i686 i386 GNU/Linux

g++ --version:

g++ (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2)

最佳答案

几种可能性:

  • 您正在使用不同的编译器和/或编译器开关编译这两个程序
  • 您有另一个 header 出现在其中一个程序中有问题的 header 之前,这与 #pragma pack 或类似内容混淆并且不会恢复设置
  • 共享结构中使用的类型在两个程序中定义不同

(注意:最后两点可以递归地应用于问题结构中使用的任何其他结构。)

关于c++ - sizeof 在编译不同的程序时为结构返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4106241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com