Fehler, Irrtümer, Fragen - Seite 2571
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
2 leaked strings leftWie kann dies behoben werden?
Translator übersetzt, zwei durchgesickerte Strings auf der linken Seite. Aber es ist nicht klar, was auf der linken Seite ist, die Schnur?
Das Skript verwendet dieJAson-Bibliothek .
Ein Json-String wird von dll über memcpy_s empfangen, in dll hat dieser String den Typ const wchar_t*
Im #import-Parameter der exportierten Funktion, deklariert alsstring & str, d.h. per Referenz, und string selbst ist alsstring str deklariert;
Dann wird die Zeichenkette str deserialisiert
Das Problem ist genau die Deserialisierung der eingehenden Zeichenkette von memcpy_s.
Denn wenn Sie im Skript einen json-Checkstring erstellen
wird die Warnmeldung nicht angezeigt.
Beim Deserialisieren eines Strings aus einer DLL erscheint nach Beendigung des Skripts erneut die Warnmeldung, dass noch 2 Strings ausgelaufen sind
Ich habe versucht, String in Char-Array StringToCharArray zu konvertieren und Char-Array zu deserialisieren.
Aber das Problem bleibt bestehen, und es erscheinen noch 2 undichte Saiten.
Was könnte der Grund dafür sein?
L"{\"s\":\"1000\"}"Die2 durchgesickerten Zeichenfolgen linksWarnungist verschwunden.Es stellte sich heraus, dass eine Funktion in der DLL, die Netzwerkdaten liest, dieses Verhalten verursacht.
Aber ich verstehe die Interpretation von2 durchgesickerten Stringsnicht, was genau bedeutet das undwo kann man weiter suchen?
Von der DLL habe ich versucht,die Check-Json-String explizit übergeben
Die2 Leaked-Strings linksWarnungist verschwunden.
Es stellte sich heraus, dass die Funktion in der DLL, die Netzwerkdaten liest, dieses Verhalten verursacht.
Aber ich verstehe die Interpretation von2 durchgesickerten Stringsnicht, was bedeutet das genau undwo kann man weiter suchen?
Wenn man es frei übersetzt, dann: "2 Zeilen verursachen ein Speicherleck".
Wörtlich bedeutet das etwa so viel wie: 2 aktuelle Strings übrig.
In der neuesten Version von mt4 im Tester funktionieren die Funktionen iHigh und iTime nicht für Frames oberhalb des täglichen Frames.
Wenn man es frei übersetzt, dann: "2 Zeilen verursachen ein Speicherleck".
Und buchstäblich sieht es so aus: 2 Stromleitungen sind übrig.
Was ist interessant, wenn ich eine Json-Zeichenfolge erhalten und ohne Deserialisierung es ich es in den Kommentar ausgeben, wie es ist, gibt es keine Leckage.
Wenn ich beginnen, es zu deserialisieren, um Json-String-Element zu erhalten, beginnt es undicht.
Es ist nicht klar, ob die Bibliothek undicht ist...
Was ist interessant, wenn ich eine Json-Zeichenfolge erhalten und ohne Deserialisierung es ich es in den Kommentar ausgeben, wie es ist, gibt es keine Leckage.
Wenn ich deserialisieren, um Json-String-Element zu erhalten beginnen, beginnt es undicht.
Ich weiß nicht, ob die Bibliothek undicht ist...
Es ist undicht. Speicher für Strings wird zugewiesen, Bytes werden kopiert, aber der Speicher wird nicht gelöscht.
Haben Sie den Quellcode?
Hut ab vor den Entwicklern für den Speichermanager, der dies im Auge behält.
Sie ist undicht. Speicher für Strings wird zugewiesen, Bytes werden kopiert, aber der Speicher wird nicht gelöscht.
Haben Sie den Quellcode?
Ein Lob an die Entwickler für den Speichermanager, der dies im Auge behält.
Die Bibliothek scheint Clear () in der Deserialize-Klassenmethode aufzurufen;
Ich habe den Quellcode von hier.
Die Bibliothek ruft Clear () in der Klassenmethode Deserialize auf;
Der Quellcode wurde von hier übernommen.
Das Leck befindet sich nicht dort, sondern höchstwahrscheinlich in der DLL, von der Sie die Zeichenfolge erhalten.
Es sieht so aus, als ob in der Bibliothek in der Methode der Klasse Deserialize Clear () aufgerufen wird;
Ich habe den Quellcode von hier.
Wie erstellen Sie CJVal? wahrscheinlich new CJVal()?
Das Leck befindet sich nicht dort, sondern höchstwahrscheinlich in der DLL, von der Sie die Zeichenfolge erhalten.
Das Leck befindet sich nicht dort, sondern höchstwahrscheinlich in der DLL, von der Sie die Zeichenfolge erhalten.
Ich habe auch den Eindruck, dass die Funktion, die die Daten liest, undicht ist.
Es puffert die Daten zunächst, überträgt sie dann, und nach der Übertragung wird der Puffer gelöscht, so der Entwickler der Lib.
Aber es scheint, dass es einen Fehler bei der Pufferbereinigung gibt.
Aber was interessant ist, wenn wir die Zeichenfolge im Skript nicht deserialisieren, gibt es kein Leck, d.h. das Problem tritt im Moment der Deserialisierung im Skript auf.
Ich prüfe nur verschiedene Varianten möglicher Ursachen.
Leider kein Quellcode, da die .lib geschlossen ist.