簡體   English   中英

了解 C++ 指針和 Memory 分配

[英]Understanding C++ Pointers and Memory Allocation

現在我有一個這樣的指針:

int * modes = new int[1000];

我想這樣做,所以當我檢查條件時,我可以刪除它的內容並再次將其清空以添加新內容。 我不能使用向量或 c++ 等價於 ArrayList 的任何東西。

目前要做到這一點,我有:

delete [] modes;
modes = new int[1000];

我在想的是,第一行從數組中刪除了 memory(它包含的元素?),第二行指向我可以使用的新 memory。 這是指針的工作方式嗎? 或者我是否可以在刪除 modes 變量后不再使用它?

另外我不能只創建一個新指針,因為這發生在 for 循環中,所以它不會在 scope 中,對嗎? (我想在循環結束后從外部訪問模式指針)

基本上,我如何刪除指針數組的內容,但仍能像剛創建時一樣使用它?

編輯:只是想說我的程序看起來確實有效,但我只是想知道我是否會導致 memory 問題以及是否有更好的方法(特別是指針數組)。

正如 jkb 在他的評論中提到的,不鼓勵直接使用原始指針和新建/刪除。 除此之外你必須記住,在你的程序結束時,你動態分配的 memory 必須通過“刪除”釋放,否則你將導致 memory 泄漏。

至於改進您的代碼,我強烈建議您閱讀動態 memory是什么。 此外,您應該研究為什么避免使用所謂的“裸”新建和刪除調用很重要,以及在此處使用它們的替代方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM