假設我使用指針創建表單並且該表單包含作爲另一個指針的子項,當我刪除表單時,我對主指針執行刪除操作,是否需要執行刪除操作子指針還是編譯器自己做的?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