Anonymní profil Dawe – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Dawe – Programujte.comAnonymní profil Dawe – Programujte.com

 

Příspěvky odeslané z IP adresy 89.176.233.–

Dawe
C / C++ › C++ a mazani pameti
2. 5. 2010   #128181

tak ted to teda taky stoupa, ale na druhou stranu o dost mirneji.

Dawe
C / C++ › C++ a mazani pameti
2. 5. 2010   #128179

Tak jsem to jak se zda vyresil... problem byl, ze sice jsem to predaval, ale kdyz nic nenasel, tak jsem predaval NULL a nemazala se pamet

if (successorFound){
newAdjacencies[0]->at(iToChange)->at(jToChange) = 0;
newAdjacencies[0]->at(jToChange)->at(iToChange) = 0;
for (int i=0; i<2; i++){
states[i] = new State(newAdjacencies[i], this->depth+1, this->numberOfVertices*iToChange+jToChange);
}
} else {
for(int adjacency_index = 0; adjacency_index < 2; adjacency_index++ ){
for(int i = 0; i < this->numberOfVertices; i++){
delete newAdjacencies[adjacency_index]->at(i);
}
}
delete newAdjacency;
delete [] states;
delete [] newAdjacencies;
states = NULL;
}

Dawe
C / C++ › C++ a mazani pameti
2. 5. 2010   #128178

http://semtex.wz.cz/memory.jpg

Dawe
C / C++ › C++ a mazani pameti
2. 5. 2010   #128177

To Dawe :
kdyz jsem to zkousel vymazat na konci funkce getSuccessors, tak mi to skonci s chybou (smazu to tomu novemu stavu)

Dawe
C / C++ › C++ a mazani pameti
2. 5. 2010   #128176

To Dawe :
ono to je v nejake pridavne knihovne asi vid?
ja prave muzu vyuzit jen tu standartni

Dawe
C / C++ › C++ a mazani pameti
2. 5. 2010   #128175

To Palmik :
diky za odpoved

ja jsem prave myslel, ze tu pamet uvolnuju prave v destruktoru:
v getSuccessors si vytvorim nove stavy:
new State(newAdjacencies[i], this->depth+1, this->numberOfVertices*iToChange+jToChange);
tyto stavy po vytvoreni se matice ulozi do adjacency:
this->adjacency = adjacency;

a pak pri mazani stavu v destruktoru smazu tuto matici
State::~State() {
for(int i = 0; i < this->numberOfVertices; i ++){
delete this->adjacency->at(i);
}
delete this->adjacency;
}

to je spatny zpusob? Teda zjevne asi jo, protoze ta pamet narusta

Dawe
C / C++ › C++ a mazani pameti
2. 5. 2010   #128172

jeste matrix je definovana takto typedef std::vector< std::vector<int>* > matrix;

Dawe
C / C++ › C++ a mazani pameti
2. 5. 2010   #128171

Ahoj, rad bych se zeptal tech kteri ovladaji C++.
Hlavni problem se tyka mazani pameti.

Zkusim trosku popsat situaci:
Mam zasobnik a do nej si vkladam stavy. Stav muze vygenerovat 2 sousedy. Zasobnik prochazim a nevhodne sousedy mazu a vhodne sousedy vkladam do zasobniku. Problem je v mazani stavu.
sousedy ziskam timto zpusobem - vytvorim si pole sousedu (ty jsou ted vzdy 2), pro kazdy pole zkopiruju aktualni stav a u jednoho ze stavu zmenim jednu hodnotu v matici na 0. Vytvorim si stavy a ty vratim.

http://paste-it.net/private/hbf4e62/

tak se mi stejne nejak nesmaze vse a stale narusta pamet az aplikace spadne. Pritom v zasobniku je vzdy +- max 20 stavu

prosim muzete poradit jak na tu pamet. .diky

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý