簡體   English   中英

我的代碼會導致內存泄漏嗎?

[英]Will my code cause memory leakage?

我有這個for循環遍歷一個向量。 然后它檢查給定的名稱是否等於模型的名稱。

最后,它創建一個指針並返回它。 現在我的問題是,如果我不刪除指針,是否會有任何內存泄漏?

Model3D* ModelMemory::GetModel(char* name)
{
   for (std::vector<Model3D*>::reverse_iterator it = mModels->rbegin();it != mModel->rend();it++)
    {
        Model3D *model = *it;
        if (model->GetName() == name)
        {
             return model;
        }
    }
}

謝謝你的幫助!

- 編輯 -

所以我的目標是將我的所有3D模型(存儲在Model3D類中)存儲在一個向量中,以便稍后可以使用Model3D的名稱檢索它。 有沒有更好的方法來做到這一點? 因為看起來我的方式不是很好的編程......

不,不會有內存泄漏,當然如果你以后刪除所有型號。 另外,使用strcmp()來比較兩個字符串

您沒有動態分配任何內存。 這是靜態分配

Model3D *model = *it;

當這個變量的上下文塊結束時(即從這個方法返回時)它將被銷毀。 它只是靜態分配的指針。

動態分配是使用new運算符完成的,沒有任何運算符。

檢查泄漏的簡單規則是delete每個new

您可以使用valgrind終端工具檢查內存泄漏。

暫無
暫無

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

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