无返回值导致double free or corruption
下面这段程序,函数fun1没有写返回值,g++编译通过,执行时报double free or corruption。添上返回值就没问题了。
没去看汇编代码(主要是不熟),推测了下原因,由于函数有返回值,所以在退出函数的时候,会把函数栈为返回的string分配的内存free掉,由于错误程序没有返回值,所以就是free了一块空内存。double free。
//Test.cpp
string fun1(string str){
cout<<str;
//return "";
}
void Test::fun2(){
string str = "101";
fun1(str);
}