双指针内存检查,我们是否需要单独删除两者

double pointer memory check, do we need to delete both separatly

本文关键字:单独 删除 是否 内存 指针 检查 我们      更新时间:2023-10-16
这样做

可以吗?

LPWSTR lpwStr = new LPWSTR;
*lpwStr = new LPWSTR;
if (lpwStr){
    if (*lpwStr)
        delete (*lpwStr);
}

我们是否需要删除 lpwStr 也???如下:

if (lpwStr){
    if (*lpwStr) {
        delete (*lpwStr);
    }
    delete lpwStr;
}
第二个

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

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

请注意,您不需要内部检查;在空指针上调用delete是有效的。

你必须deletenew编辑的所有内容,但我不明白你为什么或如何*lpwStr = new LPWSTR;

......

你应该delete任何由你new的指针。

但是,我认为你错过了一些东西,应该是这样的:

LPWSTR lpwStr = new WSTR; //<----- WSTR instead of LPWSTR
if (lpwStr)
   delete lpwStr;

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