当前位置:  技术问答>linux和unix

C的高手请,struct在内存中的存储格式问题

    来源: 互联网  发布时间:2015-12-03

    本文导语:  那位高人能帮解决一下,struct在内存中是已什么格式存储的,我在两个系统间传数据,用memcpy拷贝struct,结果在传到另一个系统时,在用memcpy拷贝回来就不正确了,请问是不是系统间struct的内存存储格式不一样? ...

那位高人能帮解决一下,struct在内存中是已什么格式存储的,我在两个系统间传数据,用memcpy拷贝struct,结果在传到另一个系统时,在用memcpy拷贝回来就不正确了,请问是不是系统间struct的内存存储格式不一样?

|
#pragma pack(1)
struct yourstruct
{
...
}
#pragma pack()

|
gcc 
结构紧缩格式
struct __attribute__(__packet__)) struct_name
{
    int a;
    char b;
};

这样 sizeof(struct struct_name) = 5;

如果不加 __attribute__(__packet__))

那就是sizeof(struct struct_name) = 8 了

|
windows下的编译器好象都是可以指定编译时候的字节对齐方式,非windows应该也有,但是我不知道。我一般用#pragma pack 来把struct包含起来,这样不管什么平台对齐方式都一样了。具体什么对齐方式,你可以打印里面的地址来看下

|
结构主要是成员对齐方式的问题。不同的编译器采用的对齐方式可能不一样,那么同一个结构在不同系统中的大小就可能不一样。
csdn中有不少这样的问题,搜索一下。

|
结构的内存对齐是和编译器相关的,系统间传递结构是个复杂的事情,不是单用memcpy就可以解决的。

|
如果两边是相同的系统,那么可以直接传struct,但这种做法不推荐。在传struct的时候要注意字节序的转换,否则会导致结果不正确。

|
不同的系统间传递结构是很不明智的。不推荐使用。处理起来也很复杂。可以传字符串比如 XML格式的。

|
最好还是自己实现串行化,不要memcpy

|
yjf7888(断刀) ( ) 正解

但还是建议使用包结构如果跨平台就使用yjf7888(断刀) ( ) 的

    
 
 

您可能感兴趣的文章:

  • 共享内存问题,高手们请进!!!
  • 高手请进:linux 多线程占用内存问题
  • 内存问题,向各位高手求助!!!
  • linux下的swap分区与虚拟内存有什么关系,请高手解答
  • linux下查看java项目虚拟内存很大,请高手指点下
  • scounix中获取内存信息大小的问题,急,请高手指点
  • 请问高手们,有没有一款工具可以测试内核内存泄露的?
  • 请教高手,一个关于共享内存的问题。
  • 急、急、急,诸位高手说说内存瞬间用光是怎么回事儿?
  • 请教高手如何释放内存
  • 网络编程中的共享内存问题,哪位高手可以帮忙解决啊?
  • 关于共享内存的问题 请高手指教
  • 在suse linux下的程序,开辟一小块儿内存竟然用了400多个毫秒,高手帮忙分析一下
  • 请教高手内存方面知识
  • 关于子进程中释放内存的问题!!?高手请进
  • 哪位编程高手知道如何编程实现获取进程的内存使用量信息(linux)
  • 高手请进: 如何用 kmalloc 分配20M 的内存空间?
  • 最近程序老是在malloc或者free内存的时候崩溃或者失去响应,请教高手。
  • 求助高手:用sar -r 和用vmstat得到的内存数据有什么区别?
  • 懂内存映射的高手进。。。
  • 关于共享存储段的使用,求助高手
  • 请高手给讲解一下堆栈、堆、静态存储等概念
  • 有没有高手提供以下方法:要将在Graphics存储成本地图像文件,怎么办?
  • 请问高手,gif/jpeg文件的格式是什么样的,我想用他们来传输数据 iis7站长之家
  • udp视频录像文件存储服务器设计问题探讨!高手请赐教!
  • JSP高手请进:如何才能把表单中提交的值传递到存储过程中的参数中?
  • ___◎◎___JDBC与存储过程的问题,高手请进!
  • 从LiveCD 启动Linux 时, 怎样获得一个可以写的存储区域? 期待高手
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高手请进!请教java把TXT或XML或PDF格式的文档转换成word格式文档的问题
  • 欢迎高手来讨论:关于文件格式的大讨论
  • 请教高手--html页面中的表格数据直接存为excel文件格式
  • linux 下能否读写.dbf 或者.xls格式的文件,怎样读写?高手指点,拜谢!!!
  • 请问高手LINUX系统加硬盘分区格式化的步骤,还有要注意点什么?
  • 在red hat9.0下挂载minix1.0格式的软盘镜像,出错?????~~求救高手
  • 请教高手关于elf,bin,.out三种文件格式的概念,含义,联系,区别
  • 请问高手,gif/jpeg文件的格式是什么样的,我想用他们来传输数据
  • pdg格式的不知道用什么阅读工具打开,那位高手能帮我一下
  • 我在linux下可以看到win2000下ntfs格式中的英文文件夹,可是却看不到中文的,还请高手帮忙.
  • 请高手指点:怎样在Linux里访问格式化成fat32的移动硬盘,通过USB接口?
  • 请问哪位高手能指导小弟如何对一个DBF格式的表单访问,具体操作?高分在线等候!急!!!!!!
  • 请教各位高手,有没有命令是用来查看文件格式的 unix dos
  • 弄不清楚linux下载网站上文件的各种格式,还请高手救救困惑的菜鸟......
  • 高手:看看下面这段资料的格式,用什么工具能去掉里面的注释,格式控制符等
  • 老问题,C/汇编混合编程,使用Nasm与gcc,生成Raw Binary目标格式,系统程序员高手请进!!!
  • c盘装了xp用的是ntfs格式,装了redhat7.3后,是用个grub引导的,里面有个dos选项但是进不了xp?高手帮忙啊!
  • 高手救命啊!-windows 2000 pro下怎么安装ISO格式的Windows2003(在线等待)
  • 请教高手:在request对象中取得multipart/form-data格式的二进制数据是不是用request.getInputStream呀?
  • c盘装win2000用的是ntfs格式,装了redhat7.3后,是用个grub引导的,里面有个dos选项但是进不了win2000?高手帮忙啊!
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3