C++ konstruktor "Cannot access memory at address .." és "Duplicate variable object name" hiba?
Az alábbi a kódrészlet: [link]
A program lefut, de debuggerrel végignézve látszik, hogy amint belép a konstruktorba, az N=szam-nál "Cannot access memory at address .." hibát dob, m = 0-ra pedig "Duplicate variable object name"-et.
Mi lehet a gond?
Milyen debuggerrel próbáltad? Nálam működik a kódrészlet, simán tudom debuggolni és nem ír ki semmit.
Nos azért vannak ebben erően hibák/hibalehetőségek, amire jelezhette ezt.
Először is, ha függvényen kívül hívod meg a konstruktort, akkor globális memóriaterületre kerül, és a fura memóriakezelésed miatt lehet hogy elmászik a memória. Én inicializálnám nullptr-re az in és out paramétereket, és megnézném egy try-catch blokkban, lehet hogy nem olyan sorrendben futnak le a sorok, ahogy azt te várod (nem tudok jobbat mondani, amíg a hívás helyét és úgy egyben az egészet nem látom).
Aztán az is súlyos hiba, hogy nem látok semmilyen destruktort, azaz amit new-val lefoglalsz, nem szabadul fel.
Hibalehetőség még, hogy ha jól látom, te vectorokból akarsz tömböt csinálni. Ebben az esetben az in és out-nál pointer helyett lehet hogy érdemesebb lenne tömböt jelölni, a fordító hátha úgy okosabb. De amúgy meg igen, sokkal bővebb infó kell.
Köszönöm a válaszokat.
3.: a nullptr jó ötlet. Amúgy van destruktor is, ahol delete-eltem a new-val létrehozott dolgokat, tényleg beleírhattam volna a megosztott kódba is.
Az viszont miért baj, ha egy tömbben vektorokat tárolok?
(Azért van ott pointer, mert nem tudom előre a méretét a tömbnek)
Nem baj, hogy tömbben vektorokat tárolsz, csak zavaró lehet a kezelése.
Amúgy azért lehet rossz tervezés, mert nem derül ki belőle, mit akarsz vele kezdeni. Ha kétdimenziós tömböt, azaz mátrixot akarsz implementálni, akkor vagy vektor-vektor párral érdemes, vagy vektor<int,int> például, vagy dupla tömb, azaz int[][].
Erre pedig: "Azért van ott pointer, mert nem tudom előre a méretét a tömbnek"; értem én, tudom mire gondolsz, csak így gondoltam, és az is ptr, csak látszik hogy tömb lesz: std::vector<int32_t> in[];
"a nullptr jó ötlet" : és találtál vele valami hibát? vagy még mindig nem tudjuk, hol a gond?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!