malloc出来的string成员(对象)赋值时崩溃
现象:
结构体
static TObject *item = null;
typdef struct:public TObject
{
//... ...
string update_file;
//... ...
}TUpdateItem;
因为涉及到多态问题,原先程序中是存了一个基类指针,在实际使用的时候才实例化,由于是struct,习惯性的用了malloc
item = (TUpdateItem*)malloc(sizeof(TUpdateItem));
item->update_file = ""; // 此句崩溃
原因:
调用malloc只分配了内存,没有对string这种对象实施构造,导致赋值时崩溃;
解决:
实例化的时候使用new
item = new TUpdateItem;
item->update_file = ""; // 不崩溃
文件已经加入工程但是链接时无法找到
原因:C++编译器编译C文件
解决:文件后缀改为cc
返回string类型的函数,返回时崩溃
原因:函数返回值无关紧要,仅为了接口一致,留了这个返回值,调用的时候没有用变量来接返回值,导致这个string对象触发异常。
string Function()
{
// ... ...
return ""; // 崩溃
}
// ... ...
// 调用
Function();
解决:返回值是对象的时候必须要有变量接参数
string Function()
{
// ... ...
return "";
}
// ... ...
// 调用
string res = Function();