Maximale Größe eines Arrays
-
Wird das new in MFC eigentlich automatisch deleted ?
-
nein
hierfür kannst Du smartpointer verwenden (auto_ptr der std oder die vielen pointer aus der boostlib, siehe C++ Artikel, alternativ kannst Du ne einfache Klasse nachbauen, die das per Destruktor macht).
-
Nein, was du anlegst, mußt du selber wieder freigeben (aber Visual Studio ist in der Lage, dir zu sagen, wo du ein delete vergessen hast).
-
Ach du meine Güte, sind vectoren langsam

Hab dieselbe Größe und es dauert ca. 3 mal solange ....
-
Was genau vergleichst du denn eigentlich?
(vielleicht sollte ich dich darauf hinweisen, daß du dem vector mit reserve() auch sagen kannst, wieviele Daten er zu erwarten hat - das spart Reallokationen und damit Laufzeit)
-
Ich vergleiche mein byte array [72000][2][5]
Ich verwende es als Ringbuffer und muss immer den ganzen Inhalt mit einer
kleinen Schleife vertauschen. Wie auch immer ... 200ms mit einem normalen
array, 2,7 Sekunden mit vector<vector<vector<byte> > > und denselben Größen
mit resize-Schleifen gesetzt.
-
thenoname schrieb:
Ich vergleiche mein byte array [72000][2][5]
Ich verwende es als Ringbuffer und muss immer den ganzen Inhalt mit einer
kleinen Schleife vertauschen. Wie auch immer ... 200ms mit einem normalen
array, 2,7 Sekunden mit vector<vector<vector<byte> > > und denselben Größen
mit resize-Schleifen gesetzt.Verwendest du zufällig eine Checked-STL oder sowas wie einen Debug-Build?
-
Debug: nein
Checked stl ? erzähl mal genauer ...
ansonsten: std::vector
-
thenoname schrieb:
Checked stl ? erzähl mal genauer ...
Eine STL-Implementation, die verschiedene Runtime-Checks implementiert. Gute Varianten überwachen nicht nur direkte Zugriffe auf die Container (z.B. den operator[] eines Vektors), sondern auch den Zugriff über Iteratoren.
-
Ok, das müsste ich wissen wenn sowas zusätzlich drinne wäre.