Errores, fallos, preguntas - página 2571
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
2 leaked strings left
¿Cómo se puede arreglar esto?
El traductor traduce, dos cadenas filtradas a la izquierda. Pero no está claro, ¿a la izquierda de qué, de la cuerda?
El script utiliza la bibliotecaJAson .
Una cadena Json se recibe de la dll a través de memcpy_s, en la dll esta cadena tiene el tipo const wchar_t*
En el parámetro #import de la función exportada, se declara comostring & str, es decir por referencia, y la propia cadena se declara comostring str;
A continuación, la cadena str se deserializa
El problema es exactamente la deserialización de la cadena entrante desde memcpy_s.
Ya que si se crea una cadena de comprobación json en el script
el mensaje de advertencia no aparece.
Deserializando una cadena desde la dll, el mensaje de advertencia aparece de nuevo después de que el script termine, quedan 2 cadenas filtradas
Intenté convertir una cadena en una matriz de caracteres StringToCharArray, y deserializar la matriz de caracteres.
Pero el problema persiste, y aparecen 2 cadenas filtradas.
¿Cuál puede ser la razón de esto?
L"{\"s\":\"1000\"}"
El aviso de2 cadenas filtradas que quedaban ha desaparecido.Resulta que una función de la dll que lee los datos de la red provoca este comportamiento.
Pero no entiendo la interpretación de las2 cadenas filtradas que quedan, ¿qué significa exactamente ydónde indagar más?
Desde la dll, he intentado pasar explícitamentela cadena json de comprobación
El aviso de2 cadenas filtradas a la izquierda ha desaparecido.
Resulta que la función de la dll que lee los datos de la red provoca ese comportamiento.
Pero no entiendo la interpretación de las2 cadenas filtradas que quedan, ¿qué significa exactamente ydónde indagar más?
Si se traduce libremente, entonces: "2 líneas causan una fuga de memoria".
Literalmente, significa más o menos lo siguiente: quedan 2 cadenas actuales.
en la última versión de mt4 en el probador iHigh, iTime funciones no funcionan para thereim marcos por encima del marco diario
Si se traduce libremente, entonces: "2 líneas causan una fuga de memoria".
Y literalmente, es así: quedan 2 líneas de corriente.
Lo interesante, es que cuando obtengo una cadena Json y sin deserializarla la emito al comentario, tal cual, no hay fuga.
Cuando empiezo a deserializar para obtener el elemento de cadena Json, empieza a tener fugas.
No está claro, ¿la biblioteca tiene fugas...
Lo interesante es que cuando obtengo una cadena Json y sin deserializarla la emito al comentario, tal cual, no hay ninguna fuga.
Cuando empiezo a deserializar para obtener el elemento de cadena Json, empieza a tener fugas.
No sé si la biblioteca tiene fugas...
Está goteando. La memoria para las cadenas se asigna, los bytes se copian, pero la memoria no se borra.
¿Tienes el código fuente?
Felicitaciones a los desarrolladores por el gestor de memoria para llevar el control de esto.
Tiene una fuga. La memoria para las cadenas se asigna, los bytes se copian, pero la memoria no se borra.
¿Tiene el código fuente?
Hay que felicitar a los desarrolladores por el gestor de memoria que hace un seguimiento de esto.
La biblioteca parece llamar a Clear () en el método de la clase Deserialize;
Obtuve el código fuente de aquí.
La biblioteca llama a Clear () en el método de la clase Deserialize;
El código fuente fue tomado de aquí.
La fuga no está ahí, sino que lo más probable es que esté en esa dll, de la que sacas la cadena.
Parece que en la biblioteca, en el método de la clase Deserialize, se llama a Clear ();
Obtuve el código fuente de aquí.
¿Cómo se crea CJVal? ¿Probablemente new CJVal()?
La fuga no está ahí, sino que lo más probable es que esté en esa dll, de la que sacas la cadena.
La fuga no está ahí, sino que lo más probable es que esté en la dll de la que se obtiene la cadena.
También me da la impresión de que la función que lee los datos tiene fugas.
Primero almacena los datos en el búfer, luego los transfiere y, una vez transferidos, el búfer se borra, según el desarrollador de la biblioteca.
Pero parece que hay un error en la limpieza del buffer.
Pero lo interesante es que si no deserializamos la cadena en el script, no hay fuga, es decir, el problema se produce en el momento de la deserialización en el script.
Sólo estoy comprobando diferentes variantes de posibles causas.
Lamentablemente no hay código fuente, ya que el .lib está cerrado.