-7

这样做可以吗。

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

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

我们还需要删除 lpwStr 吗???喜欢:

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

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

4

3 回答 3

3

是的,一般规则是你需要一个deletefor each new(和一个delete []for each new [])。

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

于 2013-05-28T11:33:48.493 回答
1

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

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

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

if (lpwStr)
   delete lpwStr;

LPWSTR是指向 a 的指针类型,WSTR因此您需要为WSTRby分配new WSTR

于 2013-05-28T11:36:53.873 回答
1

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

于 2013-05-28T11:33:41.773 回答