Erreurs, bugs, questions - page 1336

 
Alexey Navoykov:

Alors, pourquoi le destructeur n'est-il pas optimisé ? Nous devons stocker 8 octets supplémentaires juste à cause de lui...

Eh bien, je ne sais pas comment c'est mis en œuvre là-bas. Par exemple, si vous avez un tableau d'objets :

Les références (pointeurs) de chaque élément sont-elles stockées dans le système ?

Mais vous ne pouvez pas prendre un pointeur sur une structure et cela réduit la commodité de son utilisation. C'est pourquoi vous devez parfois faire un choix douloureux... Si vous parvenez à réduire la taille de la classe, ce serait merveilleux. Et si vous avez aussi un pointeur sur la structure, tout ira bien).

Créez des objets de façon dynamique, avec l'opérateur new, et vous n'aurez plus à créer d'objets vides du tout.

La structure ne peut pas être référencée par un pointeur, mais la structure peut être passée par référence, par exemple : OrderSend(MqlTradeRequest& request, MqlTradeResult& result) - dans la plupart des cas, cela suffit.

 
Konstantin Karpov:

Est-ce que tout le problème est dû aux 24 octets ? Désolé, essayez-vous d'écrire un logiciel de MT sur une calculatrice :) ?

Bien sûr, je m'excuse, mais en aspirant le problème du bout des doigts, vous bloquez les questions des autres, qui sont rarement remarquées par les représentants des développeurs.

Pour commencer, apprenez ce que sont les tableaux.
 
Alexey Navoykov:
Vous feriez mieux d'étudier les tableaux pour commencer.

Eh bien, je les ai étudiés il y a quelques années :) si vous mettez des objets de classe dans un tableau, puis créez une liste de pointeurs et créez des objets de classe dans le "heap", on vous a parlé à juste titre de l'opérateur new...

Toutes les données que j'ai sont très grosses et sont à l'origine gérées par des objets de classe, situés dans le "heap". Mon PC a 8 gigas de mémoire et je peux tout à fait utiliser cette mémoire, même une fois j'ai fait une erreur dans l'algorithme et la mémoire a fui, la mémoire a été bouchée à 95% et ensuite le système d'exploitation a commencé à tout nettoyer par lui-même.

Donc, il vaut mieux ne pas jouer au garçon offensé, mais regarder toutes les caractéristiques de la langue et vous réussirez :)

 
Vasiliy Sokolov:

Créez des objets de façon dynamique à l'aide de l'opérateur new, et vous n'aurez pas à créer d'objets vides du tout.

La structure ne peut pas être référencée par un pointeur, mais la structure peut être passée par référence, par exemple : OrderSend(MqlTradeRequest& request, MqlTradeResult& result) - dans la grande majorité des cas, cela suffit.

Quel est l'intérêt de ce conseil ? Vous semblez ne l'avoir lu qu'à travers une ligne et avoir écrit quelque chose dès que possible. Nous parlons de la taille de la classe. Cette taille ne dépend pas de la façon dont l'objet est créé, statiquement ou dynamiquement. Et "créer des objets vides" - je ne comprends pas ce que cela signifie. Et passer des arguments dans des fonctions est absolument déplacé ici aussi. Pensez-vous que nous sommes des petits enfants qui ne savent pas comment passer des objets dans des fonctions ?

 
Konstantin Karpov:

Eh bien, je les ai étudiés il y a quelques années :) si vous mettez les objets de classe dans un tableau, puis créez une liste de pointeurs et créez les objets de classe dans un "tas", vous avez été correctement conseillé sur l'opérateur new...

Toutes les données que j'ai sont très grosses et sont à l'origine gérées par des objets de classe, situés dans le "heap". Mon PC a 8 gigas de mémoire et je peux tout à fait utiliser cette mémoire, même une fois j'ai fait une erreur dans l'algorithme et la mémoire a fui, la mémoire a été bouchée à 95% et ensuite le système d'exploitation a commencé à tout nettoyer par lui-même.

Donc, il vaut mieux ne pas jouer au garçon offensé, mais regarder toutes les possibilités de la langue et vous aurez tout :)

Un autre gars intelligent... Il a commencé avec des calculatrices et maintenant il ne se soucie pas de 8 gigas. A propos des pointeurs et du tas - quel est l'intérêt de votre brillante connaissance ? Est-ce que quelqu'un ici a déjà demandé ce que sont les pointeurs ? Ou est-ce juste un chat pour la vie ?

En général, les gars, je vous demande de façon convaincante de poster dans un autre fil, s'il vous plaît, personne n'a demandé votre avis ici. Le dialogue se fait spécifiquement avec le développeur.

 
Alexey Navoykov:

Quel est l'intérêt de ce conseil ? C'est comme si vous l'aviez lu d'une ligne et que vous étiez impatient d'écrire quelque chose. Nous parlons de la taille des classes. Cette taille ne dépend pas de la façon dont l'objet est créé, statiquement ou dynamiquement. Et "créer des objets vides" - je ne comprends pas ce que cela signifie. Et passer des arguments dans des fonctions est absolument déplacé ici aussi. Pensez-vous que nous sommes des petits enfants qui ne savent pas comment passer des objets dans des fonctions ?

Ecoute, petit malin, va apprendre les bases de la programmation d'abord dans des environnements gérés par la mémoire : on t'a clairement répondu qu'une classe, même vide, contient certaines méta-données. Leur taille et leur organisation sont optimales. Qui êtes-vous pour apprendre aux développeurs comment écrire un compilateur et stocker les données correctement ? Si vous voulez économiser quelques octets, allez construire votre vélo en C ou en Assembleur.

Il y a beaucoup de gars intelligents qui lisent "C pour débutants" et qui vous donnent ensuite des conseils.

 
Alexey Navoykov:

Un autre gars intelligent... Il a commencé avec une calculatrice, maintenant il ne se soucie pas de 8 gigas. A propos des pointeurs et du tas - pourquoi cette brillante connaissance de votre part ? Quelqu'un a-t-il demandé ici ce que sont les pointeurs ? Ou est-ce juste pour discuter pour vivre ?

En général, les gars, convaincant vous demander d'inonder dans un autre fil, s'il vous plaît, personne n'a demandé votre avis ici. Le dialogue se fait spécifiquement avec le développeur.

A en juger par vos déclarations, vous travaillez avec des tableaux d'objets de classe, qui sont si nombreux que leur seule taille remplit la mémoire du terminal, que celui-ci doit être terriblement lent, sinon vous n'auriez pas soulevé cette question. Je pense que vous avez stratégiquement choisi une mauvaise approche pour travailler avec vos données et vous avez reçu beaucoup de conseils à ce sujet :

- allouez de la mémoire pour vos objets dans le "heap" et la mémoire du terminal ne sera pas encombrée.

- ne conservez pas de grandes quantités d'informations en mémoire et téléchargez les données sur le disque pour les préserver d'une perte accidentelle en cas de panne - vous pouvez également les télécharger par programme si nécessaire

Et s'aggraver avec des conseils ne vaut pas la peine, si vous voulez communiquer uniquement avec le développeur, il y a servicedesk, mais il y a beaucoup de gens ici :)

 
Renat Fatkhullin:
J'ai une question - combien de mémoire est allouée par le terminal (MT4, MT5x86 et MT5x64) pour les EAs ?
 

Les développeurs ne manquent pas d'humour.

Il me semble qu'il s'agit d'un téléchargement, et d'une sorte de balancement de l'arbre "Téléchargement" vers la droite ou la gauche.

 
Vladimir Pastushak:

Les développeurs ne manquent pas d'humour.

Il me semble qu'il s'agit d'un téléchargement, et d'une sorte de balancement de l'arbre "Téléchargement" vers la droite ou la gauche.

Si "balançoire", vous pourriez aussi le comparer à un arbre : "droite/gauche" - vous avez aussi de l'humour (confondre "droite/gauche")
Raison: