C/C++问题集

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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值