我遇到了內存泄漏的巨大問題,我不知道在哪裏把這個「刪除」來擺脫它們。以下是我的代碼的一部分,並有一個完整的:https://pastebin.com/Wtk83nuH。如何防止這些內存泄漏?
string* startowa(int& rozmiar)
{
rozmiar = 5;
string* tablica = new string[rozmiar];
for (int i = 0; i < rozmiar; i++)
tablica[i] = "text";
return tablica;
}
string* plusx(string* tab, int& rozmiar)
{
string tekst = "something";
string* tablica_3 = new string[rozmiar];
tablica_3[rozmiar - 1] = tekst;
for (int i = 0; i<rozmiar - 1; i++)
tablica_3[i] = tab[i];
return tablica_3;
}
string* minusx(string* tab, int& rozmiar)
{
string* tablica_3 = new string[rozmiar];
for (int i = 0; i < rozmiar; i++)
tablica_3[i] = tab[i];
return tablica_3;
}
int main()
{
int wybor = 1, rozmiar = 1;
string *tablica = startowa(rozmiar);
while (wybor != 55) {
cin >> wybor;
if (wybor == 1) {
rozmiar++;
tablica = plusx(tablica, rozmiar);
}
if (wybor == 6) wybor = 55;
else {
rozmiar--;
tablica = minusx(tablica, rozmiar);
}
// there were other "ifs" but its just a part of the code
}
for (int i = 0; i < rozmiar; i++)
cout << tablica[i] << endl;
delete[] tablica;
cin >> wybor;
getchar();
return 0;
}
愚蠢的,但準確的答案:不使用原始動態內存。沒有看到任何需要快速瀏覽的內容。 – user4581301
切勿在C++中使用'new'。 –
用std :: vector替換動態數組。如果你仍然需要指針,用std :: unique_ptr替換原始指針。現在在C++中很少需要新的/刪除,你應該在使用它們之前考慮一下。 –