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

TinyXML是开源的XML操作库,很好用,以前都是在VC6中使用,使用也很正常,没出现任何问题.
最近把以前的代码升级到VS2008下,运行常出现堆栈溢出,莫名其秒的堆释放崩溃.
搞得人都快疯了,后来发现是在代码中使用了对齐的原因,为了进一步确定问题,新建一个工程,只引用tinyxml.h并定义一个结构采用#pragma pack(push,1)对齐,一运行就会出现崩溃......
而采用
#pragma pack(1)
#pragma pack()
则一切正常
posted @ 2008-04-25 23:39 三毛 阅读(9768) 评论(5) 编辑 收藏

 回复 引用   
#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