MinGW下使用STL出现诡异的运行错误

<style type="text/css"> <!-- p {margin-bottom:0.21cm; direction:ltr; color:rgb(0,0,0); text-align:justify} p.western {font-family:"Times New Roman",serif; font-size:10pt} p.cjk {font-family:"宋体","SimSun"; font-size:10pt} p.ctl {font-family:"Times New Roman",serif; font-size:12pt} --> </style>

MinGW下使用STL出现诡异的运行错误


最近进行OpenGL下载入3DS文件的研究,开发环境是WindowsXP+ minGW4.4 +QtCreator2.61minGW4.4是专门用来开发Qt应用程序的编译器,相对最新的minGW编译器(4.7)要落后一些。我在编程的时候发现使用将STL中的vector作为我自定义类的成员时,会出现运行错误。详细的情况是在其中的一个成员函数中调用vector::size()函数,能够正确地返回,但是出了这个函数的时候,vector::size()调用就会出错,显示117040789(我不记准确的数,大概就是这个),这样使用new的时候就会返回错误。由于以前一直都没有触发这个编译器的Bug,所以一开始我折腾了很久,写了很多cerrassert,使用gdb也没有办法。

目前的解决方法只有重新进行自定义类的内存布局,将所有有关STL的内容写在一块,或者类的内存布局这样的:大粒度的类成员放在前面,小粒度的数据成员放在后面,这样才稍微缓解一些。我测试了一下,内存布局改变了之后就vector::size()就不会出错了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值