我遇到了内存泄漏的巨大问题,我不知道在哪里把这个“删除”来摆脱它们。以下是我的代码的一部分,并有一个完整的: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++中很少需要新的/删除,你应该在使用它们之前考虑一下。 –