URL: https://www.overclockers.at/coding-stuff/cpp-array-gre-mit-new-will-nicht_236868/page_1 - zur Vollversion wechseln!
Steh grad irgendwie an, will ein Array dynamisch initialisieren, machs eigentlich genau so wie in allen Tutorials und wie ichs eigentlich "gelernt" hab ... nur es will nicht.
z.B:
Code: CPPint* a = NULL; a = new int[10]; for(int i=0;i<9;i++) { a[i] = i; }
sollt meiner meinung nach so passen - mal grob drüber geschaut
was mir nur auffällt wenn du 10 elemente willst solltest in der schleife <10 statt <9 schreiben 
Zitat von Neo1010sollt meiner meinung nach so passen - mal grob drüber geschaut
was mir nur auffällt wenn du 10 elemente willst solltest in der schleife <10 statt <9 schreiben
das war jetzt einfach nur kurz zum testen ...
Wenn du mal genauer wissen möchtest was im Speicher steht empfehle ich dir die "Memory" Ansicht zu verwenden. Findest du im Menü Debug -> Windows -> Memory.
Ausserdem, da du C++ verwendest, und nicht C, könntest du dieses hässliche Array im obrigen Beispiel besser mit einem vector ausdrücken:
Code: CPPstd::vector<int> a(10); for (int i = 0; i < (int)a.size(); i++) { a[i] = i; }
Danke für den Tipp!
Sind vectoren jetzt die neuen Arrays, also komplett Arrays durch vectoren ersetzen oder ...?
std::vector implementiert ein dynamisches array (mit 24 Byte overhead, falls du es genau wissen willst), bei dem du dich nicht selbst um die Speicherverwaltung und Pointer kümmern musst.
Falls es kein dynamisches array sein muss kannst du statt vector auch einfach schreiben:
Das ist dann exakt was du zuvor auch hattest, nur wieder ohne Pointer und ohne overhead (kein extra Speicherbedarf).Code: CPPstd::array<int, 10> a;
du hast es zwar schon gelöst, also nur btw: array-inhalt einfach mit std::cout ausgeben lassen um array-init zu testen.
Danke nochmal für die Infos u. Tipps.
Hätte gleich noch eine Frage dazu passend. Eine API die ich verwend erfordert das manche Vars 128 Bit aligned sind. Ansich kein Problem mit __attribute__ ((aligned (16)) (das mitgelieferte macro geht will irgendwie nicht, deswegen so ^^) nur wie mach ich das in kombination mit new?
wenn ichs über array initialisiere, also hausnummer int bla[100] __attri ... gehts, mach ichs mit new is scheinbar nicht mehr 128bit aligned und die API schreit dann natürlich das ihr das nicht passt.
Zitat von pinkeyEine API die ich verwend erfordert das manche Vars 128 Bit aligned sind.
Zitat von pinkeyDanke nochmal für die Infos u. Tipps.
Hätte gleich noch eine Frage dazu passend. Eine API die ich verwend erfordert das manche Vars 128 Bit aligned sind. Ansich kein Problem mit __attribute__ ((aligned (16)) (das mitgelieferte macro geht will irgendwie nicht, deswegen so ^^) nur wie mach ich das in kombination mit new?
wenn ichs über array initialisiere, also hausnummer int bla[100] __attri ... gehts, mach ichs mit new is scheinbar nicht mehr 128bit aligned und die API schreit dann natürlich das ihr das nicht passt.

overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026