双指针内存检查,我们是否需要单独删除两者
double pointer memory check, do we need to delete both separatly
这样做
可以吗?
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
是有效的。
你必须delete
你new
编辑的所有内容,但我不明白你为什么或如何*lpwStr = new LPWSTR;
你应该delete
任何由你new
的指针。
但是,我认为你错过了一些东西,应该是这样的:
LPWSTR lpwStr = new WSTR; //<----- WSTR instead of LPWSTR
if (lpwStr)
delete lpwStr;
LPWSTR
是一种指向WSTR
的指针类型,因此您需要按 new WSTR
分配WSTR
。
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 如何在C++中从两个单独的for循环中添加两个数组
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 用C++在单独的头文件中完成函数体
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 运算符C++ "delete []"仅删除 2 个前值
- 删除指向指针的指针是运行时错误吗
- 从 2 个单独的数组中删除重复元素
- 通过在 C++ 中单独直接访问容器的迭代器来删除容器的元素
- 删除单独插槽中的发件人
- 双指针内存检查,我们是否需要单独删除两者
- 在单独的线程上删除qt类后ASSERT失败