Wycieki tablic dynamicznych

0

Mam troche Newbie problem otóż chcę zadeklarować tablicę dwywymiarową i robię to tak:

int **tab = new int*[n];
for(int i = 0; i < n; i++)
tab[i] = new int[2 * n] // np

W tym momencie powinienem mieć tablicę dwuwymiarową tab[n][2n]
Zwalnianie pamięci robię w ten sposób:

for(int i = 0; i < n; i++)
delete [] tab[i];

delete [] tab;

Niech mi ktoś powie w takim układzie, gdzie tutaj jest wyciek pamięci? Ponieważ jeżeli włączę managera zadań, to program poczatkowo powiedzmy zajmuje 384 K a gdy wpiszę np n = 5 powieksza sie do np. 652 K i tak zostaje, mimo iż pamięc opróżniłem przed końcem programu. Fakt, że po wyłączeniu programu wydaje mi się, że pamięć zostaje zwolniona, ale czy nie powinna ona być zwolniona wcześniej?

0

pamięć nie zostaje zwolniona natychmiast tylko jeśli program się kończy lub potrzebna jest wolna pamięć - generalnie sugerowanie się menadżerem zadań to błąd.

0

O ok. Dzięki wielkie ;-)

0

Jak chcesz sprawdzić memlaki to użyj Valgrinda lub jego jakiegoś Windowsowego odpowiednika.

0
strona_główna_Valgrinda napisał(a)

valgrind 3.6.1 (tar.bz2) [5974Kb] - 16 February 2011.
For {x86,amd64,arm,ppc32,ppc64}-linux and {x86,amd64}-darwin (Mac OS X).

Nie ma tego na windowsa, natomiast znalazłem odpowiedniki (podobno), który byś polecał?

Purify
Insure++

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