int main()
{
int *x = new int[100];
return 0;
}
#include<cstdlib>
int main()
{
int *x = new int[100];
exit(0);
}
Jeśli dobrze rozumiem to 1 kod ma wycieki pamięci a drugi nie?
int main()
{
int *x = new int[100];
return 0;
}
#include<cstdlib>
int main()
{
int *x = new int[100];
exit(0);
}
Jeśli dobrze rozumiem to 1 kod ma wycieki pamięci a drugi nie?
Totalnie tego nie rozumiesz.
O wycieku mówimy gdy po kolei:
W twoich przykładach nic poważnego się nie dzieje, bo i tak wszystko jest sprzątane. I zamiana return
na exit
absolutnie nic do tego nie ma.
Konkretny przykład wycieku pamięci:
int main() {
new char; //1: idzie w eter
{
int *ptr = new int;
} //2: i co z pamięcią, na którą wskazywał ptr?
return 0;
}
Oba kody narazone sa na wyciek pamieci, jeśli uruchomisz w systemie nie gwarantujacym sprzatania.