Características del lenguaje mql5, sutilezas y técnicas - página 217
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Cómo hago ahora (b3110) para poner a cero una estructura compleja?
Constructor con puesta a cero.
Y si quieres ponerte a cero en el progreso, también hay un método adicional para hacerlo:
Constructor con puesta a cero.
Y si quieres ponerlo a cero mientras trabajas, entonces método adicional para esto:
Me gustaría un método universal, como el que en su día permitió ZeroMemory.
Considera que he cambiado - ahora compruebo el primer término para x[i].i == 0 (antes la condición era x[i].x == 0.0)
Resultado: falso
Y con ZeroMemory - verdadero.
Gracias, lo he arreglado.
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Peculiaridades de mql5, consejos y trucos
mktr8591, 2021.08.12 19:43
He establecido un límite pendiente. Entonces lo cambio manualmente y por script y ORDER_TIME_SETUP cambia.
Ejemplo de lo que cambia.
Registro de ajustes.
ORDER_TIME_SETUP se modifica. ¿Bicho?
Me gustaría una forma universal, como la que en su día permitió ZeroMemory.
¿Y quién va a liberar el buffer en cadena? ZeroMemory es esencialmente un análogo de esto.
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/aa366920(v=vs.85)
No se llamará a ningún destructor. En consecuencia, el puntero del búfer se borrará en la cadena, mientras que el propio búfer se filtrará. El trabajo directo con la memoria es como un campo de minas: si pierdes la vigilancia, se acabó))
Este es un ejemplo de fuga en su caso:
El objeto ya no posee un puntero al buffer, sino que el propio buffer se ha "filtrado".
PS. Joder no tipos POD a cero a través de memset y ZeroMemory
PS. Bueno, no es una puesta a cero de tipo POD a través de memset y ZeroMemory
No lo he probado, pero creo que el buffer de cadenas se pone a cero.
No lo he comprobado, pero creo que el buffer de cadenas se está restableciendo.
¿Por qué iba a reiniciarse?))
Es todo adulto, como debe ser)))
UPD: t1, t2 con su salida, para que el compilador no sobreoptimice el conjunto)
UPD2: pueden llamar a delete para el buffer, pero no consigo averiguar cómo hacerlo en un caso en el que la cadena está dentro de la estructura
UPD3: aunque está escrito en la ayuda, se llama para ello personalmente, por lo que debe liberar buffer, espero, que por puntero a la memoria liberada ya leer los datos.
¿Por qué iba a ponerse a cero?)
Sería bueno ver
Print(GetAddress(a.a));Antes y después.
Sería bueno ver
Antes y después.
Como debe ser. En el primer caso la dirección de memoria, en el segundo 0
¿Por qué iba a reiniciar?))
Aquí todo es maduro, como debe ser)))
UPD: t1, t2 con su salida, para que el compilador no sobreoptimice el conjunto)
UPD2: pueden llamar a delete para el buffer, pero no consigo averiguar cómo hacerlo en un caso en el que la cadena está dentro de la estructura
UPD3: aunque está escrito en la ayuda, se le llama personalmente, significa que el buffer debe ser liberado, espero que ya se haya liberado la memoria por puntero.
En principio, todo debería ser bastante trivial en la aplicación)