假设我使用指针创建表单并且该表单包含作为另一个指针的子项,当我删除表单时,我对主指针执行删除操作,是否需要执行删除操作子指针还是编译器自己做的?C++指针处理
Q
C++指针处理
0
A
回答
4
如果你是为指针分配内存的人,是的,你需要明确释放你分配的所有内存。
struct A
{
};
struct B
{
A* a;
B() { a = new A; }
~B();
};
B* b = new B;
delete b;
//you will have a memory leak here, since the memory pointed to by b.a
//is not released
正确的方法是释放内存在析构函数:
struct B
{
A* a;
B() { a = new A; }
~B() { delete a; }
};
你应该对智能指针读了,他们可能会更适合你的情况。
0
是的,你通常需要明确地删除它以避免内存泄漏。简单的规则:如果您使用new
分配它,则需要匹配delete
才能将其分配。
也就是说,你通常想使用类似智能指针的东西来自动处理所有这些。
0
这个问题取决于写入表单的析构函数的方式。例如,表单可能会尝试调用子表单的析构函数。如果它执行这种清理,那么你不需要进一步发布子表单。知道你在讨论什么表单管理系统(例如MFC)会很有帮助。
+0
表格使用Motif制作。 – anirvan 2012-03-28 05:58:34
相关问题
- 1. c#处理像指针的数组
- 2. 处理C++中的指针和向量
- 3. 处理C的空终止指针(ffi)
- 4. 处理C中结构的指针#
- 5. 妥善处理指针的指针
- 6. 处理refrence的指针/使用SWIG [C++到Java]双指针
- 7. 理解指针/ C++
- 8. 使用Cython处理C++类时处理指针
- 9. 我的指针将如何处理在C++和Windows中处理?
- 10. 处理空指针异常
- 11. 处理函数和指针
- 12. 空指针exeception处理
- 13. 处理realloc中的指针?
- 14. 处理指针数组
- 15. 处理2d数组指针
- 16. C++指向数组指针的指针(使用LinkedList碰撞处理的HashTable)
- 17. OpenCV指向位图处理的指针
- 18. C++正确初始化和处理指向地图的指针
- 19. 处理指向C++层级中的成员函数的指针
- 20. c指针理解问题
- 21. 理解C:递增指针
- 22. C - 帮助理解指针
- 23. Obj C - 理解指针
- 24. 指针指针(C++)
- 25. 在Matlab中调用C++函数,处理二维数组,指针指针?
- 26. 针对C/C++代码的预处理指令#ifndef
- 27. 如何处理Base *指针作为Derived <T> *指针?
- 28. 如何处理弱指针和强指针?
- 29. 指针vs指针指针C
- 30. 如何在C++应用程序中处理指向Objective-C对象的指针
Form?我们在谈论.NET的WinForms吗? – jalf 2012-03-26 06:36:00
表格使用Motif制作。 – anirvan 2012-03-28 05:58:23