C++智能指针错误使用导致的野指针

void My3DBars::ResetTemperatureData()
{
    std::shared_ptr<QBarDataArray> dateArray;
    std::shared_ptr<QBarDataRow> dataRow;
    dateArray = std::make_shared<QBarDataArray>();

    dateArray->reserve(m_Ylist.size());
    for (int Y = 0; Y < m_Ylist.size(); ++Y)
    {
        dataRow = std::make_shared<QBarDataRow>(m_Xlist.size());
        for (int X = 0; X < m_Xlist.size(); ++X)
        {
            (*dataRow)[X].setValue(m_ZData[Y][X]);
        }
        dateArray->append(dataRow.get());
    }

    m_PrimarySeries->dataProxy()->resetArray(dateArray.get(), m_Ylist, m_Xlist);
}
如以上代码,m_PrimarySeries对象需要在后续用上智能指针dateArray内包含的指针,
该指针会在智能指针超出函数范围后进行销毁,导致后续指针变成野指针,导致程序闪退。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值