Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
manutara

Založen: 02. 01. 2012 Příspěvky: 81 Bydliště: Kosice SVK
|
Zaslal: 10. červenec 2012, 11:16:25 Předmět: uffff |
|
|
zdravim,
hmm, mno mne osobne sa nepaci miesanie C a C++ dohromady. najskor,
by som sa rozhodol co pouzijem.
stale som si nevsimol ``definiciu'' co treba urobit (co chces urobit) a nedari
sa to. takto sa to zvrhava len na hadzajnie nejakeho kodu do plena. s C by
som vedel poradit, ale ked vidim
,
,
a tak podobne dostavam sa do depresii hehe, zatim... _________________ hadam to OpenGL este par rokov prezije |
|
Návrat nahoru |
|
 |
Aroidzap

Založen: 14. 11. 2011 Příspěvky: 68
|
Zaslal: 10. červenec 2012, 11:23:36 Předmět: |
|
|
rezna napsal: |
na co delete? - vzdyt tam nikde nemas pointery - takze se to uvolni samo
ale jinak prosimte otevri si knihu o C/C++ a zacni nekde od zacatku - mas zasadni mezery a brzo shoris jako papir |
jezis diky, ja jsem vul vubec jsem si toho nevsim, vsem se omlouvam |
|
Návrat nahoru |
|
 |
mar
Založen: 16. 06. 2012 Příspěvky: 610
|
Zaslal: 10. červenec 2012, 11:35:14 Předmět: |
|
|
Aroidzap napsal: |
no ale kdyz ho chci smazat (ne na konci programu) a uvolnit tim pamet, tak to udelam jak? |
No zavoláš na něm clear(). To sice změní velikost na nulu, ale ne kapacitu.
Pokud chceš mít jistotu, tak použij tohle (swap trick):
kód: |
std::vector<ABC>().swap(array[i]);
|
|
|
Návrat nahoru |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 10. červenec 2012, 11:57:22 Předmět: |
|
|
Mozes snad bezpecne zavolat aj std::vector::resize(0) (alebo resize(1)), ak trvas na "rucnom" uvolneni pamati. "Swap trick" na nulovanie vektoru je fakt nechutna prasacina a zabudni, ze si to niekedy videl  _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
 |
mar
Založen: 16. 06. 2012 Příspěvky: 610
|
Zaslal: 10. červenec 2012, 12:06:08 Předmět: |
|
|
resize(0) neuvolní paměť, swap je sice prasárna, ale alespoň je to něco, co funguje. btw. resize(0) je určitě větší prasárna, než clear()  |
|
Návrat nahoru |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 10. červenec 2012, 12:21:42 Předmět: |
|
|
Sorry, myslel som std::vector::reserve(), ale ako ukazuje dokumentacia, ani ten nedokaze znizovat kapacitu Ani clear() + reserve(0) nefunguje Takze ostava bud swap alebo manualne vyvolanie destruktora (+rekonstrukcia)... _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
 |
Aroidzap

Založen: 14. 11. 2011 Příspěvky: 68
|
Zaslal: 10. červenec 2012, 12:27:00 Předmět: |
|
|
uz mi to vsecko jede, a zda se, ze to vyhovuje mojim pozadavkum dik vsem |
|
Návrat nahoru |
|
 |
(CZ)genius
Založen: 28. 07. 2007 Příspěvky: 85 Bydliště: Neratovice
|
|
Návrat nahoru |
|
 |
Aroidzap

Založen: 14. 11. 2011 Příspěvky: 68
|
Zaslal: 10. červenec 2012, 18:47:56 Předmět: |
|
|
pekne... akorat to asi nemam jak zkompilovat... a visual studio uz mi trochu prirostlo k srdci |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 10. červenec 2012, 19:07:50 Předmět: |
|
|
fakt si kup nejaku knizku pretoze naucit sa poriadne C++ sa len z webu neda. minimalne teda neviem o ziadnom dostatocne kvalitnom texte ktory by sa C++ systematicky venoval. v cestine na 100% nie je.
inak je to jednoduche tam kde je new treba mat aj niekde delete. pripady kedy to delete netreba su vynimky a nie pravidlo. takymi vynimkami su napriklad std::unique_ptr/shared_ptr alebo Qt objekty. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
|