gibt die Ausführungsrichtlinie zurück. - Seite 4

 
prostotrader:

Sie müssen es so machen:

Danke)
 
Und bitte erklären Sie auch, was bei der Deinitialisierung zu tun ist. Ich habe im Code gesehen, dass nur Instanzen von Klassen gelöscht werden. Und Variablen und Arrays müssen auf Null gesetzt werden? Wozu soll das gut sein? Was ist, wenn Klassen nicht gelöscht werden? Bleiben sie im Speicher, bis das Terminal heruntergefahren wird, oder auch danach?
 
Ivan_Invanov:
Und erklären Sie bitte auch, was bei der Deinitialisierung zu tun ist. Ich habe im Code gesehen, dass nur Instanzen von Klassen gelöscht werden. Und Variablen und Arrays müssen auf Null gesetzt werden? Wozu soll das gut sein? Was ist, wenn Klassen nicht gelöscht werden? Bleiben sie im Speicher, bis das Terminal heruntergefahren wird, oder auch danach?

Nur Objekte, die über new erstellt wurden, sollten gelöscht werden.

 
Dmitry Fedoseev:

Nur Objekte, die über new erstellt wurden, sollten gelöscht werden.

Ich danke Ihnen. Und warum?
 
Ivan_Invanov:
Ich danke Ihnen. Und warum ist das so?

Denn er entfernt sich nicht von selbst.

 
Dmitry Fedoseev:

Denn es entfernt sich nicht von selbst.

Und wenn Sie das Terminal schließen, bleibt es dann erhalten?
 
Ivan_Invanov:
Und wenn Sie das Terminal schließen, bleibt es dann erhalten?

Ich denke, sie wird entfernt werden, aber ich bin mir nicht sicher. Machen Sie sich keine großen Hoffnungen. Sie erstellen sie, Sie löschen sie.

 
Dmitry Fedoseev:

Ich denke, sie wird entfernt werden, aber ich bin mir nicht sicher. Machen Sie sich keine großen Hoffnungen. Sie erstellen sie, Sie löschen sie.

Es wird gelöscht, genau, sie müssen nur die erstellten Objekte kontrollieren. Dies ist notwendig, damit ein Programmierer weiß, was und wo er erstellt und löscht, es verringert die Wahrscheinlichkeit von Fehlern im Zusammenhang mit Speicherlecks während des Betriebs von Programmen.
 
Ich danke Ihnen allen für Ihre Antworten.
 
Bitte klären Sie die Situation mit den Operatoren == und != . Wenn vergleichbare Variablen als wahr dargestellt werden, wenn sie einen beliebigen Wert ungleich Null haben (in der Hilfe wird das so geschrieben). Wie werden Arrays dann dargestellt? Und warum in diesem Beispiel gibt es einen Vergleich "nicht gleich zwei", warum genau zwei, wenn jeder Wert ungleich Null wahr ist, wenn es keinen Unterschied gibt, wenn es 1 war, warum sagt es genau 2? Hier der Code des offiziellen Beispiels (aus Moving Average 2009-2017 v1.00 Zeile 132).
MqlRates rt[2];
//--- go trading only for first ticks of new bar
   if(CopyRates(_Symbol,_Period,0,2,rt)!=2)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }

1. Stimmt es, dass jeder Wert, der nicht Null ist, wahr ist, wenn er mit den Operatoren "==" , "!=" verglichen wird?

2. Wie wird ein Array dargestellt? Wie kann es überhaupt mit einer Zahl verglichen werden?

3. Warum gibt es eine "2" in dem Vergleich? Wenn die Wahrheit laut Hilfe ein Wert ungleich Null ist, dann ist es logisch, "1" zu schreiben.

4. hat die Bedingung if CopyRates einen Fehler erhalten?