Errores, fallos, preguntas - página 1336

 

¿Es todo el problema debido a los 24 bytes? Lo siento, ¿está tratando de escribir el software de MT en una calculadora :) ?

Por supuesto, me disculpo, pero al chuparse el problema de los dedos, está bloqueando las preguntas de los demás, que rara vez se dan cuenta de los representantes de los desarrolladores.

 
Alexey Navoykov:

Entonces, ¿por qué no se optimiza el destructor? Tenemos que almacenar 8 bytes extra sólo por eso...

Bueno, no sé cómo se implementa allí. Por ejemplo, si tienes un array de objetos:

¿Se almacenan en el sistema las referencias (punteros) de cada elemento?

Pero no se puede tomar un puntero a una estructura y eso reduce la conveniencia de usarla. Por eso a veces hay que hacer una elección dolorosa... Si se logra reducir el tamaño de la clase, sería maravilloso. Y si se tiene un puntero a la estructura también, todo estará bien).

Cree objetos dinámicamente, con el operador new, y no tendrá que crear objetos vacíos.

La estructura no puede ser referenciada por un puntero, pero la estructura puede ser pasada por referencia, por ejemplo: OrderSend(MqlTradeRequest& request, MqlTradeResult& result) - en la mayoría de los casos, esto es suficiente.

 
Konstantin Karpov:

¿Es todo el problema debido a los 24 bytes? Lo siento, ¿estás tratando de escribir el software de MT en una calculadora :) ?

Por supuesto, me disculpo, pero al chuparse el problema de los dedos, está bloqueando las preguntas de los demás, que rara vez se dan cuenta de los representantes de los desarrolladores.

Para empezar, aprende qué son las matrices.
 
Alexey Navoykov:
Para empezar, será mejor que estudies las matrices.

Bueno, yo los estudié hace unos años :) si pones objetos de clase en un array, luego creas una lista de punteros y creas objetos de clase en un "montón", te hablaron correctamente del operador new...

Todos los datos que tengo son muy grandes y son manejados originalmente por objetos de clase, ubicados en el "heap". Mi PC tiene 8 gigas de memoria y puedo utilizar totalmente esta memoria, incluso una vez me equivoqué en el algoritmo y se filtró la memoria, la memoria se tapó al 95% y luego el sistema operativo comenzó a limpiar todo por sí mismo.

Así que es mejor que no te hagas el ofendido, sino que busques entre todas las características del lenguaje y tendrás éxito :)

 
Vasiliy Sokolov:

Cree objetos dinámicamente utilizando el operador new, y no tendrá que crear objetos vacíos.

La estructura no puede ser referenciada por un puntero, pero la estructura puede ser pasada por referencia, por ejemplo: OrderSend(MqlTradeRequest& request, MqlTradeResult& result) - en la gran mayoría de los casos esto es suficiente.

¿Qué sentido tiene este consejo? Parece que lo has leído sólo por una línea y has escrito algo cuanto antes. Estamos hablando del tamaño de la clase. Este tamaño no depende de cómo se cree el objeto, estática o dinámicamente. Y lo de "crear objetos vacíos" no entiendo a qué me refiero. Y lo de pasar argumentos a funciones también está absolutamente fuera de lugar aquí, ¿crees que somos niños pequeños que no sabemos cómo se pasan objetos a funciones?

 
Konstantin Karpov:

Bueno, yo los estudié hace unos años :) si pones los objetos de clase en un array, luego creas una lista de punteros y creas objetos de clase en el "montón", te hablaron correctamente del operador new...

Todos los datos que tengo son de gran tamaño, manejados inicialmente por objetos de clase, ubicados en el "heap", la memoria del PC es de 8 gigabytes y puedo ver como esta memoria es utilizada a su capacidad, incluso cuando una vez cometí un error en el algoritmo y se produjeron fugas de memoria, la memoria se tapó al 95%, y luego el propio sistema operativo comenzó a limpiar todo.

Así que mejor que no te hagas el ofendido, pero busca entre todas las posibilidades del lenguaje y lo conseguirás todo :)

Otro listillo... Empezó con calculadoras y ahora no le importan los 8 gigas. Sobre los punteros y el montón... ¿para qué sirve su brillante conocimiento? ¿Alguien de aquí ha preguntado alguna vez qué son los punteros? ¿O es una charla de toda la vida?

En general, chicos, por favor, pediros convincentemente que posteéis en algún otro hilo, por favor, nadie os ha pedido consejo aquí. El diálogo es específicamente con el promotor.

 
Alexey Navoykov:

¿Qué sentido tiene este consejo? Es como si lo hubieras leído de un tirón y no pudieras esperar a escribir algo. Estamos hablando del tamaño de la clase. Este tamaño no depende de cómo se crea el objeto, estática o dinámicamente. Y lo de "crear objetos vacíos" no entiendo a qué me refiero. Y lo de pasar argumentos a funciones también está absolutamente fuera de lugar aquí, ¿crees que somos niños pequeños que no sabemos cómo se pasan objetos a funciones?

Escucha, listillo, vete a aprender primero los fundamentos de la programación en entornos con gestión de memoria: se te ha respondido claramente que una clase, incluso vacía, contiene ciertos metadatos. Su tamaño y organización son óptimos. ¿Quién eres tú para enseñar a los desarrolladores cómo escribir un compilador y almacenar los datos correctamente? Si quieres ahorrarte algunos bytes, construye tu bicicleta en C o en Assembler.

Hay muchos listos que leen "C para principiantes" y luego te dan consejos.

 
Alexey Navoykov:

Otro tipo inteligente... Empezó con la calculadora, ahora no le importan los 8 gigas. Sobre los punteros y el montón - ¿por qué este brillante conocimiento suyo? ¿Alguien aquí ha preguntado alguna vez qué son los punteros? ¿O es una charla de toda la vida?

En general, chicos, pediros convincentemente que inundéis en algún otro hilo, por favor, nadie os ha pedido consejo aquí. El diálogo es específicamente con el promotor.

A juzgar por tus declaraciones, trabajas con arrays de objetos de clase, que son tan numerosos que su mero tamaño llena la memoria del terminal, que debe ser terriblemente lento, de lo contrario no habrías planteado esta cuestión. Creo que has elegido estratégicamente un enfoque equivocado para trabajar con tus datos y te han dado muchos consejos al respecto:

- asignar memoria para sus objetos en el "heap" y la memoria del terminal no se obstruirá

- no guardar grandes cantidades de información en la memoria y cargar los datos en el disco para salvarlos de una pérdida accidental en caso de caída - también puede cargarlos programáticamente si es necesario

Y agravar a sí mismos con el asesoramiento no vale la pena, si desea comunicarse sólo con el desarrollador, hay un servicio de escritorio, pero hay muchas personas aquí :)

 
Renat Fatkhullin:
Tengo una pregunta: ¿cuánta memoria asigna el terminal (MT4, MT5x86 y MT5x64) para los EAs?
 

Los desarrolladores no carecen de humor.

Me parece que es una descarga, y una especie de balanceo del árbol "Download" a la derecha o a la izquierda.