这样做是否可以。
LPWSTR lpwStr = new LPWSTR;
*lpwStr = new LPWSTR;
if (lpwStr){
if (*lpwStr)
delete (*lpwStr);
}
我们还需要删除lpwStr ???像:
if (lpwStr){
if (*lpwStr) {
delete (*lpwStr);
}
delete lpwStr;
}
第二个指针显示内存泄漏。哪一个是正确的第一个或第二个。 感谢。
答案 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
。