回答
你刪除指針這樣的指針:
int** p = 0;
p = new int*; // create first pointee
*p = new int; // create 2nd pointee
**p = 0; // assign 2nd pointee
// free everything
delete *p;
delete p;
這似乎是不尋常我刪除被傳遞給方法的指針。但無論如何:
void freeme(int **p) {
delete *p;
*p = 0;
}
int main() {
int *a = new int;
*a = 3;
freeme(&a);
// a == 0 now
}
謝謝!我需要刪除方法內的引用指針,因爲它不再需要在方法外部使用。 – Moderator71 2010-10-06 18:58:58
使用C++很多時候傳遞RAW指針似乎很奇怪。 – 2010-10-06 19:57:57
你應該從底層做起,去了。否則,您將失去對引用鏈中數據引用的引用!
1.刪除您提領兩次獲得數據,即*myPtrToPtr
2.刪除您提領一次得到(指針)的數據,即myPtrToPtr
當然不過,只有在指針和它指向的東西都被動態分配的情況下才這樣做。
通過我與評論者同意...是更具體的將是有益的給我們一些背景。
如果漏水,必須先刪除引用指針,然後刪除引用指針。一旦刪除引用指針,訪問引用指針的存儲將是未定義的行爲,因爲您剛剛銷燬了該對象。
您首先需要定義誰是每個指針的所有者,然後再考慮銷燬它。
如果你必須摧毀它指向你自己的一個指針的指針,那麼你需要或者先破壞引用指針或破壞其他人之前暫時保存其價值。
但你應該考慮使用內存檢查像Valgrind的工具/淨化或同等學歷,想想是誰擁有什麼:做胡亂猜測之前(即誰應該破壞誰)。
「A指針的指針」?
如果您爲例有:
MyClass * obj_ptr = new Myclass();
MyClass ** obj_ptr_ptr = &obj_ptr;
//then if you want to clean do :
delete (*obj_ptr_ptr);//to clean the class instance.
爲什麼你需要清潔指針......如果你使用的malloc ......或任何其他動態(堆)只分配。 但它可能在堆棧上分配了指針,因此不需要清除它。在作用域結束時,在作用域中使用的堆棧上的內存被清除。
- 1. 刪除指針的指針
- 2. 指針 - 刪除
- 3. 刪除指針
- 4. 刪除指針
- 5. 指針刪除
- 6. C++刪除一個指針指針
- 7. 指針錯誤,中斷刪除[]指針
- 8. 從一個指針刪除的指針
- 9. c + +刪除指針
- 10. 刪除TCHAR指針
- 11. C++刪除指針
- 12. 刪除空指針
- 13. 如何刪除具有指針成員的類的指針?
- 14. 如何從解析中的指針數組中刪除指針?
- 15. 刪除指針數組的指針指向對象
- 16. 刪除指針向量中的指針指向的對象
- 17. 使用指針:指針指針指針
- 18. 要刪除哪個指針?
- 19. C++類指針刪除segfaulting
- 20. 刪除指針錯誤
- 21. 刪除指針向量
- 22. 刪除數組指針?
- 23. 指針刪除崩潰
- 24. C++:刪除指針結構
- 25. 刪除指針從功能
- 26. 刪除別名指針
- 27. 刪除指針問題
- 28. return * this;刪除指針
- 29. 刪除指針數組:_BLOCK_TYPE_IS_VALID
- 30. 刪除指針問題
一個具體的例子會有幫助。 – 2010-10-06 18:42:04