ArrayResize Doks
Ich verstehe die Doks nicht so ganz. Könnte mir jemand das bitte erklären.
Das ursprüngliche Problem (ich habe bisher noch nicht versucht, die Ursache herauszufinden): Sämtliche Orders werden in einem Struct Array festgehalten. Dieses Array bekommt seine Größe von einer Benutzereingabe MaxOrders, z.B. 5. Das heißt das Array zählt von 0-4, rein theoretisch sollte es also 5 Orders festhalten können. Konnte es aber nicht, die 5. Order legte den EA lahm (Array out of range). Wie gesagt, die Ursache dafür muß ich noch finden, das steht aber auf einem anderen Blatt. Frage: Wenn ich bei ArrayResize(ArrayName,MaxOrders) den 3.Parameter verwenden will, bekomme ich dann automatisch eine Reserve, falls ich mehr als 5 Orders habe? Also im Beispielfall, wenn vorher nur MaxOrders=5 war, ich aber ArrayResize(ArrayName,MaxOrders,MaxOrders) setze, heißt das dann, ich kann das Array um weitere 5 Orders überschreiten, bevor gemeckert wird? (Diese ganze Memory allocation Sache finde ich mehr als verwirrend.) Danke. AVT |
Zitat:
Zitat:
Die Reserve macht nur Sinn, wenn du ein großes Array häufig in der Größe über ArrayResize verändern willst. Also du hast ein Array mit der Größe von 1000 und setzt die Reserve auch auf 1000. Jetzt kannst du die Größe des Arrays auf irgend etwas <=1000 setzen, es wird aber kein neuer Speicherplatz für das Array herangezogen. Das Initialisieren ist somit viel schneller. Z.B. Ansprechen kannst du diesen Reservierten Bereich allerdings nicht, da das ja jetzt nur freigehaltener Speicherplatz ist. double MyArray[]; ArrayResize(MyArray,1000,1000); // Erster Resize mit Reserve ArrayResize(MyArray,10,1000); // dieser ArrayResize würde schneller ausgeführt werden! MyArray[9] = 10; // Kein Problem, da die Größe ja 10 beträgt! MyArray[10] = 0; // Dies würde zu einem Compilerfehler führen! Ohne Reserve wird halt immer wieder ein neuer Speicherbereich gesucht und belegt, was halt Zeit beansprucht. Schau die das Beispielscript einmal an und lasse es mal laufen, dann ist das kein Problem mehr den Vorteil zu verstehen. Gruß Timo |
Danke für Deine Antwort, Timo.
Zitat:
Zitat:
Zitat:
Danke. AVT |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum