Forum » Programiranje » [C++] Vectorji povzročajo memory leake
[C++] Vectorji povzročajo memory leake
gtu ::
Pozdravljeni,
malo sem začel optimirati kodo nekega programa. Zdelo se mi je da porablja kar precej rama in tudi vedno več.
Uporabil sem navodila s te splete strani.
Za prikaz sem upoarbil ta ukaz:
Odziv je bil tak:
V kodi imam točno 19 vektorjev, točno toliko mi ta funkcija pokaže leakov. Vsi so znotraj podrejenih scopov, kot je funkcija za prikaz leakov, zato mislim, da jih nebi smelo biti več v spominu.
Prosim za malo pomoči kako bi to lahko rešil.
Hvala
malo sem začel optimirati kodo nekega programa. Zdelo se mi je da porablja kar precej rama in tudi vedno več.
Uporabil sem navodila s te splete strani.
Za prikaz sem upoarbil ta ukaz:
Odziv je bil tak:
V kodi imam točno 19 vektorjev, točno toliko mi ta funkcija pokaže leakov. Vsi so znotraj podrejenih scopov, kot je funkcija za prikaz leakov, zato mislim, da jih nebi smelo biti več v spominu.
Prosim za malo pomoči kako bi to lahko rešil.
Hvala
Vesoljc ::
vektorjev as in std:vector? filas notr instance ali pointerje?
Abnormal behavior of abnormal brain makes me normal...
sas084 ::
Sam std::vector ne povzroča leakov, povzročajo jih objekti, ki so shranjeni v njem (recimo pointerji na objekte itd. - primer). Malo več boš mogu povedat o tej kodi ker iz tega kar si do zdaj napisu se ne da nič pametnega razbrati.
gtu ::
Tako recimo deklariram en vektor točk. Rabim znotraj neke zanke. Takoj za tem ga zbiršem, za vsak slučaj :) in nato napolnim z vrednostmi:
Tako nekako.
Ne uporabljam nikjer vektorja pointerjev.
Upam da sem dovolj pokazal.
vector <Point> ogljiscaObmocij;
ogljiscaObmocij.clear();
for (int i = 0; i < stIteracij; i++){
//nekaj kode dodatne kode za preračun x in y
ogljiscaObmocij.push_back(Point(x, y));
}
Tako nekako.
Ne uporabljam nikjer vektorja pointerjev.
Upam da sem dovolj pokazal.
Zgodovina sprememb…
- spremenil: gtu ()
sas084 ::
Ne vidim problema če uporablaš objekte. Mogoče maš leake v samem Point objektu. Verjetno je odvisno tud od same uporabe funkcije _CrtDumpMemoryLeaks();
Ta varjanta ti pomoje javi memory leake tud za memory, ki ga zaseda vektor in Point objekti ki dejansko niso memory leaki.
Probi ta primer ko gre vektor out of scope če ti javi memory leake:
vector <Point> ogljiscaObmocij;
ogljiscaObmocij.clear();
for (int i = 0; i < stIteracij; i++){
//nekaj kode dodatne kode za preračun x in y
ogljiscaObmocij.push_back(Point(x, y));
}
_CrtDumpMemoryLeaks();
Ta varjanta ti pomoje javi memory leake tud za memory, ki ga zaseda vektor in Point objekti ki dejansko niso memory leaki.
Probi ta primer ko gre vektor out of scope če ti javi memory leake:
{
vector <Point> ogljiscaObmocij;
ogljiscaObmocij.clear();
for (int i = 0; i < stIteracij; i++){
//nekaj kode dodatne kode za preračun x in y
ogljiscaObmocij.push_back(Point(x, y));
}
}
_CrtDumpMemoryLeaks();
Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | c++ ned helpOddelek: Programiranje | 2247 (1975) | barcaFan |
| » | [C++] Ali je mogoče?Oddelek: Programiranje | 2151 (1627) | Ciklamen |
| » | Pomoč pri programiranju z javoOddelek: Programiranje | 4317 (3244) | milc |
| » | [VC++] čuden memory leakOddelek: Programiranje | 2161 (1866) | Senitel |
| » | [c++] Pomoč pri izdelavi std::vector "wrapperja"Oddelek: Programiranje | 2013 (1914) | zhigatsey |


