Fehler, Irrtümer, Fragen - Seite 1336

 

Ist das das ganze Problem wegen der 24 Bytes? Entschuldigung, versuchen Sie, MT-Software auf einem Taschenrechner zu schreiben :) ?

Natürlich entschuldige ich mich, aber indem Sie sich das Problem aus den Fingern saugen, blockieren Sie die Fragen anderer Leute, die von den Vertretern der Entwickler selten wahrgenommen werden.

 
Alexey Navoykov:

Warum also sollte der Destruktor nicht optimiert werden? 8 Bytes müssen wir extra speichern, nur weil er das tut...

Nun, ich weiß nur nicht, wie es dort umgesetzt wird. Zum Beispiel, wenn Sie ein Array von Objekten haben:

Sind Referenzen (Zeiger) für jedes Element im System gespeichert?

Aber man kann keinen Zeiger auf eine Struktur nehmen, und das mindert die Bequemlichkeit, sie zu benutzen. Deshalb muss man manchmal eine schmerzhafte Entscheidung treffen... Wenn man es schafft, die Klassengröße zu reduzieren, wäre das wunderbar. Und wenn man auch einen Zeiger auf die Struktur hat, ist alles in Ordnung.)

Erstellen Sie Objekte dynamisch mit dem new-Operator, und Sie müssen überhaupt keine leeren Objekte erstellen.

Die Struktur kann nicht durch einen Zeiger referenziert werden, aber die Struktur kann per Referenz übergeben werden, zum Beispiel: OrderSend(MqlTradeRequest& request, MqlTradeResult& result) - in den meisten Fällen ist dies ausreichend.

 
Konstantin Karpov:

Ist das das ganze Problem wegen der 24 Bytes? Entschuldigung, versuchen Sie, MT-Software auf einem Taschenrechner zu schreiben :) ?

Natürlich entschuldige ich mich, aber indem Sie sich das Problem aus den Fingern saugen, blockieren Sie die Fragen anderer Leute, die von den Vertretern der Entwickler selten wahrgenommen werden.

Lernen Sie erst einmal, was Arrays sind.
 
Alexey Navoykov:
Für den Anfang sollten Sie sich mit Arrays beschäftigen.

Nun, ich habe sie vor ein paar Jahren studiert :) wenn man Klassenobjekte in ein Array packt, dann eine Liste von Zeigern erstellt und Klassenobjekte im "Heap" erstellt, wurde man zu Recht auf den Operator new hingewiesen...

Alle Daten, die ich habe, sind sehr groß und werden ursprünglich von Klassenobjekten verarbeitet, die sich im "Heap" befinden. Mein PC hat 8 Gigabyte Arbeitsspeicher und ich kann diesen Speicher voll ausnutzen, auch wenn ich einmal einen Fehler im Algorithmus gemacht habe und der Speicher ausgelaufen ist, der Speicher war zu 95% verstopft und dann hat das Betriebssystem angefangen, alles von selbst aufzuräumen.

Spielen Sie also besser nicht den beleidigten Jungen, sondern schauen Sie sich alle Funktionen der Sprache an und Sie werden Erfolg haben :)

 
Vasiliy Sokolov:

Erstellen Sie Objekte dynamisch mit dem new-Operator, und Sie müssen überhaupt keine leeren Objekte mehr erstellen.

Die Struktur kann nicht durch einen Zeiger referenziert werden, aber die Struktur kann per Referenz übergeben werden, zum Beispiel: OrderSend(MqlTradeRequest& request, MqlTradeResult& result) - in den allermeisten Fällen ist dies ausreichend.

Was soll dieser Ratschlag? Sie scheinen ihn nur über eine Zeile gelesen zu haben und haben so schnell wie möglich etwas geschrieben. Wir sprechen über die Größe der Klasse. Diese Größe hängt nicht davon ab, wie das Objekt erstellt wird, statisch oder dynamisch. Und "leere Objekte erzeugen" - ich verstehe nicht, was ich damit meine. Und die Übergabe von Argumenten an Funktionen ist hier auch völlig fehl am Platz. Halten Sie uns für kleine Kinder, die nicht wissen, wie Objekte an Funktionen übergeben werden?

 
Konstantin Karpov:

Nun, ich habe sie vor ein paar Jahren studiert :) wenn man Klassenobjekte in ein Array packt, dann eine Liste von Zeigern erstellt und Klassenobjekte im "Heap" erstellt, wurde man zu Recht auf den neuen Operator hingewiesen...

Alle Daten, die ich habe, ist groß, zunächst von Klassenobjekten behandelt, in der "Heap" befindet, ist der PC-Speicher 8 Gigabyte und ich kann sehen, wie dieser Speicher auf seine Kapazität verwendet wird, auch wenn ich einmal einen Fehler in den Algorithmus und Speicherlecks gemacht, ist der Speicher zu 95% verstopft, und dann das Betriebssystem selbst begonnen, alles aufzuräumen.

Spielen Sie also besser nicht den beleidigten Jungen, sondern schauen Sie sich alle Möglichkeiten der Sprache an und Sie werden alles mitbekommen :)

Noch ein schlauer Kerl... Er hat mit Taschenrechnern angefangen und jetzt sind ihm 8 Gigabyte egal. Über Zeiger und Heap - was bringt dein brillantes Wissen? Hat hier schon mal jemand gefragt, was Zeiger sind? Oder ist das nur ein Chat fürs Leben?

Im Allgemeinen, Jungs, bitte überzeugend fragen Sie in einem anderen Thread zu posten, bitte, niemand fragte nach Ihrem Rat hier. Der Dialog findet speziell mit dem Entwickler statt.

 
Alexey Navoykov:

Was soll dieser Ratschlag? Es ist, als hätten Sie ihn aus einer Zeile herausgelesen und könnten es kaum erwarten, etwas zu schreiben. Es geht um die Größe von Klassen. Diese Größe hängt nicht davon ab, wie das Objekt erzeugt wird, statisch oder dynamisch. Und "leere Objekte erzeugen" - ich verstehe nicht, was ich damit meine. Und die Übergabe von Argumenten an Funktionen ist hier auch völlig fehl am Platz. Halten Sie uns für kleine Kinder, die nicht wissen, wie Objekte an Funktionen übergeben werden?

Hören Sie zu, Sie Schlaumeier, lernen Sie erst einmal die Grundlagen der Programmierung in speicherverwalteten Umgebungen: Ihnen wurde eindeutig die Antwort gegeben, dass eine Klasse, selbst eine leere, bestimmte Metadaten enthält. Ihre Größe und Organisation ist optimal. Wer sind Sie, dass Sie Entwicklern beibringen, wie man einen Compiler schreibt und Daten richtig speichert? Wenn Sie ein paar Bytes sparen wollen, bauen Sie Ihr Fahrrad in C oder Assembler.

Es gibt eine Menge kluger Leute, die "C für Anfänger" lesen und dir dann Ratschläge geben.

 
Alexey Navoykov:

Noch ein schlauer Kerl... Er hat mit einem Taschenrechner angefangen, jetzt sind ihm 8 Gigabyte egal. Über Zeiger und Heap - woher kommt dieses brillante Wissen von dir? Hat irgendjemand hier jemals gefragt, was Zeiger sind? Oder ist es nur ein Chat fürs Leben?

Im Allgemeinen, Jungs, überzeugend fragen Sie in einem anderen Thread zu überschwemmen, bitte, niemand fragte Ihren Rat hier. Der Dialog findet speziell mit dem Entwickler statt.

Nach Ihren Aussagen zu urteilen, arbeiten Sie mit Arrays von Klassenobjekten, die so zahlreich sind, dass ihre schiere Größe den Speicher des Terminals füllt, so dass es furchtbar langsam sein muss, sonst hätten Sie diese Frage nicht gestellt. Ich denke, dass Sie strategisch den falschen Ansatz gewählt haben, um mit Ihren Daten zu arbeiten, und Sie haben eine Menge Ratschläge dazu erhalten:

- Speicher für Ihre Objekte im "Heap" zuweisen, damit der Terminalspeicher nicht verstopft wird

- keine großen Datenmengen im Speicher zu halten und die Daten auf die Festplatte hochzuladen, um sie im Falle eines Absturzes vor versehentlichem Verlust zu bewahren - Sie können sie bei Bedarf auch programmatisch hochladen

Und verschlimmern sich mit Beratung ist es nicht wert, wenn Sie nur mit dem Entwickler kommunizieren wollen, gibt es einen Service Desk, aber es gibt viele Menschen hier :)

 
Renat Fatkhullin:
Ich habe eine Frage - wie viel Speicher wird vom Terminal (MT4, MT5x86 und MT5x64) für EAs zugewiesen?
 

Die Entwickler sind nicht humorlos.

Klingt für mich nach einem Download und einer Art "Download"-Baumschwung nach rechts oder links.