#pragma pack(push,1)与#pragma pack(1)的区别

TinyXML是开源的XML操作库,很好用,以前都是在VC6中使用,使用也很正常,没出现任何问题.
最近把以前的代码升级到VS2008下,运行常出现堆栈溢出,莫名其秒的堆释放崩溃.
搞得人都快疯了,后来发现是在代码中使用了对齐的原因,为了进一步确定问题,新建一个工程,只引用tinyxml.h并定义一个结构采用#pragma pack(push,1)对齐,一运行就会出现崩溃......
而采用
#pragma pack(1)
#pragma pack()
则一切正常
0
0
(请您对文章做出评价)
« 上一篇:由HEAP Corruption DETECTED查到的
» 下一篇:VS2008 中无法使用ACTIVEX控件的解决
posted @ 2008-04-25 23:39 三毛 阅读(7381) 评论(5)  编辑 收藏 所属分类: VC, C++

  回复  引用    
#1楼2008-07-09 11:00 | yttria[未注册用户]

#pragma pack(push,1) // 这里,保存了该对齐方式 : 1字节对齐

#pragma pack(pop) // 如果保存了对齐方式,用这个。


  回复  引用  查看    
#2楼[楼主]2008-07-19 12:22 | 三毛      
可能是由于CPU字令集的问题吧,我同事的INTEL CPU使用#pragma pack(push,1) 同样的代码没问题,而我的AMD CPU则会崩溃,采用#pragma pack(1)则不崩
  回复  引用    
#3楼2008-07-28 09:32 | yttria[未注册用户]
受教了
  回复  引用    
#4楼2008-12-27 10:59 | tosp[未注册用户]
把原来的字节对齐方式压栈
  回复  引用    
#5楼2009-02-19 14:39 | 魔方网[未注册用户]
学习了。
http://www.mofun.cc