2. Keine Meldung "Leck im Speicher" (neu ohne Löschen)
Richtig gesagt, über die RVO-Optimierung (es gibt auch NRVO), ist es derzeit fehlt in der MQL-Compiler, sondern wird in der Zukunft hinzugefügt werden (für jetzt betrachten wir diese Optimierung als eine nicht-prioritäre Aufgabe).
nicht reproduzierbar ist, überprüfen Sie bitte, ob Sie wichtige Details für die Reproduktion nicht angegeben haben.
Danke für die Klarstellung. Reproduziert - keine Leckagemeldung und warum?
Der Optimierer ist hier überoptimiert, da es keine Operationen auf den Speicher oder Zeiger gibt, die im new-Operator erstellt wurden, die Zuweisung dieses Speichers wurde entfernt.
Wir werden überlegen, ob wir diesen "Fehler" im Optimierer beheben oder ihn so verbessern, dass das Speichern eines Zeigers in einer unbenutzten Variablen das Löschen der neuen Operation nicht blockiert.
Guten Tag. Bitte teilen Sie den Entwicklern mit, warum MQL4 und MQL5 die Funktion haben, ein Indikator-Unterfenster aus einem Expert Advisor zu entfernen, während sie nicht die Funktion haben, ein Indikatorfenster zu erstellen. Ich muss Vorlagen verwenden oder den Fensterindikator manuell starten, was unpraktisch ist, weil die Informationen im Diagramm verloren gehen. Ich möchte auch Indikatoren aus einer Ressourcendatei starten und anzeigen können. Oder Ratschläge, wie man es macht.
Ich möchte, dass MACROS(Num) durch "Num" ersetzt wird, aber das Ergebnis ist immer "##A###". Ist es möglich, ein Makro zu definieren, um das zu erreichen, was ich will?
voidOnStart()
{
double dPrice = 1.08249;
int iPrice = (int)((dPrice / _Point) + 0.1);
double dNewPrice = iPrice * _Point; // При этом нормализации это значение не требует в OrderSendif (dPrice != dNewPrice)
Print((string)(dPrice - dNewPrice));
}
Wenn Sie einen Auftrag zu Integer * Point (ohne Normalisierung) eröffnen und dann den Eröffnungskurs abfragen, wird er sich von dem nicht normalisierten Integer * Point unterscheiden.
Warum verwendet OrderSEnd IMMER nicht-normierte Integer * Point Preise?
Ich mache ein Makro, bei dem MACROS(Num) durch "Num" ersetzt werden soll, aber es wird immer "##A###" angezeigt. Ist es möglich, ein Makro zu definieren, um das zu erreichen, was ich will?
Entfernen Sie die Anführungszeichen aus dem Text des Makros
Um einen Makroparameter in eine Zeichenkette umzuwandeln, verwenden Sie #:
1. Fünf oder vier? Ich tippe mal auf eine Vier. Vergrößern Sie einfach das Fenster des Testers.
2. nehmen Sie es und testen Sie es
Haha, vielen Dank (mt4)
1366 x 768 (( ein Drittel des Bildschirms muss gestreckt werden.
Deine Fähigkeit zur Hellsichtigkeit ist ebenbürtig.
Nehmen wir ein einfacheres Beispiel
Um es formell auszudrücken: Wie viele Aufrufe der Art A( A& ) gibt es? Erstens. Zumindest erzeugt C++ keine Zwischenobjekte
1. Doppelter Aufruf des Kopierkonstruktors
2. Keine Meldung "Leck im Speicher" (neu ohne Löschen)
Vereinfachtes Beispiel
Ergebnis:
2016.08.15 14:17:39.093 Script1 (GBPUSD,M15) A::A
Fazit: Es wird kein Destruktor aufgerufen und gleichzeitig keine Meldung über ein Speicherleck ausgegeben (wie im folgenden Beispiel)
Ergebnis:
2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 16 Bytes ausgelaufener Speicher
2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 1 Objekt vom Typ A übrig
2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 1 nicht gelöschte Objekte übrig
2016.08.15 14:26:27.992 Script2 (GBPUSD,M15) A::A
Der Optimierer ist hier überoptimiert, da es keine Operationen auf den Speicher oder Zeiger gibt, die im new-Operator erstellt wurden, die Zuweisung dieses Speichers wurde entfernt.
Wir werden überlegen, ob wir diesen "Fehler" im Optimierer beheben oder ihn so verbessern, dass das Speichern eines Zeigers in einer unbenutzten Variablen das Löschen der neuen Operation nicht blockiert.
Bitte teilen Sie den Entwicklern mit, warum MQL4 und MQL5 die Funktion haben, ein Indikator-Unterfenster aus einem Expert Advisor zu entfernen, während sie nicht die Funktion haben, ein Indikatorfenster zu erstellen.
Ich muss Vorlagen verwenden oder den Fensterindikator manuell starten, was unpraktisch ist, weil die Informationen im Diagramm verloren gehen.
Ich möchte auch Indikatoren aus einer Ressourcendatei starten und anzeigen können.
Oder Ratschläge, wie man es macht.
Warst du nicht derjenige, der den "Visualisierungs-Tipp" organisiert hat?
Wie kommen Sie darauf, dass es ein Fehler ist? Der Name des Ordners entspricht der Anschlussnummer, über die die Verbindung hergestellt wurde
Ich habe für mich eine kleine Entdeckung gemacht
Wenn Sie einen Auftrag zu Integer * Point (ohne Normalisierung) eröffnen und dann den Eröffnungskurs abfragen, wird er sich von dem nicht normalisierten Integer * Point unterscheiden.
Warum verwendet OrderSEnd IMMER nicht-normierte Integer * Point Preise?
Entfernen Sie die Anführungszeichen aus dem Text des Makros
Um einen Makroparameter in eine Zeichenkette umzuwandeln, verwenden Sie #:
#define MACROS(A) #A## wird zur Verkettung von Token verwendet