删除指针分配的内存不起作用

问题描述 投票:0回答:2

我正在使用包含HTTP POST请求的QT框架在C ++中创建一个应用程序。答复指针指向的值不会被删除,并且会导致内存泄漏。我试图删除这样的内存分配:

if (reply)
{
    qDebug() << "reply deleted";
    delete reply;
}
reply = m_qnam->post(request, jsonString);
qDebug() << reply;
connect(reply, SIGNAL(finished()), this, SLOT(handleNetworkData()));
connect(reply, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(handleSSLErrors()));

[每当我尝试这样做时,程序都会立即崩溃。在此类的头中,答复作为指针启动:

QNetworkReply * reply;

有人知道为什么我的程序通过删除指针指向的内存分配而崩溃吗?有什么可能解决我的问题的方法?

c++ qt pointers qt4
2个回答
0
投票

也许您应该使用reply.deleteLater()


0
投票

代替使用原始指针,您可能需要考虑切换到Smartpointer(例如std::unique_ptr)。

[Smartpointer使用RAII,其中类std::unique_ptr<T>的实例保存指针并在销毁时将其删除。

要回答您的问题:由于reply = m_qnam->post(request, jsonString);可能返回nullptr,并且您(大概)尝试取消对此nullptr的引用,因此它崩溃。

© www.soinside.com 2019 - 2024. All rights reserved.