Wycieki pamięci

0
 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?

6

Totalnie tego nie rozumiesz.

O wycieku mówimy gdy po kolei:

  1. Nasza aplikacja jest wciąż uruchomiona
  2. Zaalokowaliśmy pamięć
  3. Straciliśmy do niej dostęp

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;
}
2

Oba kody narazone sa na wyciek pamieci, jeśli uruchomisz w systemie nie gwarantujacym sprzatania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1