prave tu riesime zase dalsi problem v c++: da sa nejako zistit ci uz bola pocas programu dealokovana dynamicka pamat? (urcite da, napr s vynimkami, ale jednoduchsie?)
napr je:
Kód:
for(int i = 0; i < (this->sizeOfSide); ++i) {
delete[] p_data[i];
}
delete[] p_data;
to je kod klasickeho destruktora v triede ktora ma atribut char** p_data a p_data sa v konstruktore alokuju cez new na velkost sizeOfSide * sizeOfSide...
Otazka je, ako sa da najlahsie zistit, ci p_data nebol dealokovany niekde uz pocas programu, aby destruktor vedel ci ho ma dealokovat alebo nie. V jave to islo tusim jednoducho, ze if(p_data != NULL) ale v c++ mi to nefunguje, proste v c++ henta podmienka vrati vzdy true - aspon tak to robi v mojom programe - ma to tak byt? ak ano tak potom ako zistim ci to je alokovane/dealokovane (okrem vynimiek a pomocnej premennej). Dakujem za odpovede.
edit: Takze som nasiel zatial najlahsi sposob: vzdy ked dealokujem nastavim p_data = NULL (neviem preco ma to nenapadlo). Ale stale to je riadok naviac, tak ak je aj lepsia moznost tak sem s tym.