加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:42:51 所属栏目:百科 来源:网络整理
导读:我有2个共享头文件的程序.此头文件定义具有少量成员的结构.然后是#define:#define STRUCTURE_SIZE sizeof(OUR_STRUCTURE). 然后在共享内存中使用此结构,STRUCTURE_SIZE用于shmget()的size参数. 不幸的是,对于一个程序,STRUCTURE_SIZE最终为20758,而在另一个
我有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 2月11日07:05:37 UTC 2010 i686 i686 i386 GNU / Linux

g –version:

g(GCC)4.4.1 20090725(红帽4.4.1-2)

解决方法

一些可能性:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读