双指针内存检查,我们需要单独删除它们

时间:2013-05-28 11:31:45

标签: c++ memory-leaks

这样做是否可以。

LPWSTR lpwStr = new LPWSTR;
*lpwStr = new LPWSTR;

if (lpwStr){
    if (*lpwStr)
        delete (*lpwStr);
}

我们还需要删除lpwStr ???像:

if (lpwStr){
    if (*lpwStr) {
        delete (*lpwStr);
    }
    delete lpwStr;
}

第二个指针显示内存泄漏。哪一个是正确的第一个或第二个。 感谢。

3 个答案:

答案 0 :(得分:3)

是的,一般规则是每delete需要new(每delete [] new []

请注意,您不需要内部检查;

在空指针上调用delete是有效的。

答案 1 :(得分:1)

你必须delete 一切new编辑,但我不明白为什么或如何做*lpwStr = new LPWSTR; ......

答案 2 :(得分:1)

你应该delete任何new指针。

但是,我认为你错过了什么,它应该是这样的:

LPWSTR lpwStr = new WSTR; //<----- WSTR instead of LPWSTR

if (lpwStr)
   delete lpwStr;

LPWSTR是一种指向WSTR的指针,因此您需要按WSTR分配new WSTR