- 论坛徽章:
- 0
|
我的程序是c和c++混编的,原来用的g++3.4.2来编译,前几天同事把g++升级到4.3.3,结果现在编译后的程序,有时会报这个错,然后程序异常退出。
我测试了g++3.4.2和g++4.3.3的一个小小的差别。
代码如下:
////////////////////////////////////////////////
#include <iostream>
using namespace std;
string temp();
int main(int argc,char** argv)
{
temp();
}
string temp()
{
cout << "1234567890" << endl;
}
////////////////////////////////////////////////
这段代码在两个版本都能编译通过,低版本编译的可以正确显示,但是高版本编译的就提示
1234567890
*** glibc detected *** free(): invalid pointer: 0x009fefe8 ***
Aborted
我估计跟这个有关,我在老的代码中发现了不少函数定义有返回值,但是实际代码中并没有返回的情况。
在低版本的g++中自动修正了这个错误,而高版本可能不做这样的修正了。
老代码中有很多前人写的已经用了很久的类库,一个个去改不太合适,看来我只能在编译时指定老版本的g++算了。
[ 本帖最后由 lemboyz 于 2009-2-10 10:23 编辑 ] |
|