Was stimmt hiermit nicht!?
-
() != []
Du willst, dass m_data ein array ist. Deshalb willst du immer new[] verwenden.// btw:
Du hast gewaltig dicke Memoryleaks drinnen. new[] einfach über das alte Objekt lässt letzteres bis Programmende im SPeicher rumgeistern
-
Und nicht delete(m_data); sondern delete[] m_data;
-
c) deletes sind auskommentiert
d)deleteist keine Funktion
e) man benutztdelete[]auf Speicher der mitnew[]angefordert wurde
f) es gibtstd::vectorundboost::array
-
Ja, ich nutz sonst auch immer std::vector, aber ich brauch das, um Pakete fürs Netz zu bauen, daher muss das Array 1. flexibel in seiner Größe (wie bei vector), aber 2. auch direkt als zusammenhängender Datensatz - zb für memcpy o.ä. - ansprechbar sein.. Geht sowas etwas auch mit std::vector?
-
std::vector garantiert, dass alle Daten am Stück im Speicher hängen - std::vector ist ein variables Array. Sonst könntest du ja std::list nutzen, was eine verkettete Liste ist.

-
Achsooooooo! Und wie greift man direkt darauf zu?
-
zB &myVector[0]
-
Manchmal sieht man den Wald vor lauter Pointern nicht... Vielen Dank euch allen!
-
Fellhuhn schrieb:
zB &myVector[0]
Aber vorher das
if( !myVector.empty() ) { ... }nicht vergessen, sonst rappelt´s im Karton
-
Rappelnde Kartons sind meist interessanter als das was vorher drin war. Sagen zumindest meine Katzen.