簡體   English   中英

使用類的向量時是否會遇到內存泄漏? (C ++)

[英]Can I encounter memory leaks when using vectors of classes? (C++)

我在程序中使用了許多向量,並且我想避免內存泄漏。 這是一個包含我自己創建的類的向量的示例。

vector<MyClass> objects;

objects = vector<MyClass>(10);

如您所見,我沒有使用過“ new”運算符,並且向量不是指針類型。 我是否仍會遇到內存泄漏而沒有以某種方式刪除向量? 如果是這樣,我如何刪除該向量並重新分配內存?

不,您不會以這種方式直接遇到與向量有關的內存泄漏。 實際上, objects是具有自動存儲持續時間的變量。 這意味着您創建的變量將存在於您創建的范圍內。 如果已在函數,if / for / while / etc范圍甚至原始塊范圍中創建了它,則將在該相同范圍的末尾對其進行清理,而無需您執行任何操作。

然后,沒有什么可以防止您的類本身泄漏,例如,如果您擁有一些內存的所有權並且在類的實例消失時不釋放它。

內存泄漏被定義為存在的內存,但是由於丟失了指針,您再也無法訪問。 循環執行此操作,您將很快真正耗盡可用內存。

如果不使用new動態分配內存,則不會發生內存泄漏。

假設您將一個實例添加到此向量中以循環方式進行。 這會消耗大量內存。 但這不是泄漏,因為您確切知道內存的去向。 而且,如果不再需要它,您仍然可以釋放它。

暫無
暫無

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

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