我正在使用C++在Visual Studio中編寫代碼。 我的測試說我有內存泄漏。我不明白爲什麼。C++代碼中的內存泄漏
這裏是錯誤:
檢測到內存泄漏! 轉儲對象 - > e:\ gbm \ inf1005c \ td6 \ exercice1 \ exercice1.cpp(175):{1417}位於0x0073C7C8的常規塊,0字節長。 Data:<>
非常感謝。
請注意,colletion是一個結構,並且內存泄漏的行是這一個: nouvelleCollection.livres = new Livre * [nTitresPareils];
Collection retrouverLivresParNom(const wstring& titre, const Collection& collection) // Mettre les bons paramètres.
{ int nTitresPareils = 0;
// Retrouver les livres dans la collection dont le titre correspond à la recherche
for (int i = 0; i < collection.nLivres; i++){
bool trouve = (wcsstr(collection.livres[i]->titre, titre.c_str()) != nullptr);
if (trouve)
nTitresPareils ++;
}
// Allouer l'espace qui contiendra le tableau des livres trouvés
Collection nouvelleCollection;
nouvelleCollection.livres = new Livre*[nTitresPareils];
// Copier les pointeurs vers les livres trouvés
int compteur = 0;
for (int i = 0; i < collection.nLivres; i++){
bool trouve = (wcsstr(collection.livres[i]->titre, titre.c_str()) != nullptr);
if (trouve){
nouvelleCollection.livres[compteur] = collection.livres[i];
compteur++;
}
}
nouvelleCollection.nLivres = nTitresPareils;
nouvelleCollection.nLivresAlloues = nTitresPareils;
// Retourner le nombre de livres trouvés
return nouvelleCollection;
}
規則1:當有一個'new'時,記得'delete'。規則編號爲ZERO:將「新」和「刪除」封裝在RAII設施中。 – 2014-12-05 01:50:53
您應確保Collection類的析構函數調用 – 2014-12-05 01:53:50
規則-1(在規則#0之前出現):除非必要,否則不要使用動態內存分配變量(例如運行時的未知數量或過大的本地變量或自動存儲變量)。 – 2014-12-05 02:05:27