Ошибки, баги, вопросы - страница 2571
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
2 leaked strings left
Как это можно полечить?
Переводчик переводит, две утечки строк слева. Но не понятно, слева чего, строки?
В скрипте используется JAson библиотека.
Из dll принимается Json строка через memcpy_s, в dll эта строка имеет тип const wchar_t*
В #import параметр экспортированной функции, объявлен как string & str, то есть по ссылке, а сама строка объявлена как string str;
Далее строка str десериализуется
Проблема именно в десериализации пришедшей строки из memcpy_s.
Так как если в скрипте создать проверочную json строку
то предупредительное сообщение не появляется.
Десериализую пришедшую строку из dll, снова появляется предупреждение после завершения скрипта, 2 leaked strings left
Пробовал пришедшею строку преобразовать в char массив StringToCharArray, и десериализовать char массив.
Но проблема остаётся, и так же появляется 2 leaked strings left.
В чём может быть причина?
L"{\"s\":\"1000\"}"
Предупреждение 2 leaked strings left исчезло.Получается, что в dll функция которая читает сетевые данные, вызывает такое поведение.
Но не понятна сама трактовка 2 leaked strings left, что она конкретно означает и куда дальше копать?
Из dll попробовал явно передать проверочную json строку
Предупреждение 2 leaked strings left исчезло.
Получается, что в dll функция которая читает сетевые данные, вызывает такое поведение.
Но не понятна сама трактовка 2 leaked strings left, что она конкретно означает и куда дальше копать?
Если в недословном переводе, то: "2 строки вызывают утечку памяти".
А дословно - примерно так: остались 2 текущие строки.
в последнем билде мт4 в тестере не работают функции iHigh,iTime для тамйм фреймов выше дневного
Если в недословном переводе, то: "2 строки вызывают утечку памяти".
А дословно - примерно так: остались 2 текущие строки.
Что интересно, когда получаю Json строку и не десериализуя её вывожу в коммент, как есть полностью, то никаких утечек нет.
Начинаю десериализовать, чтобы получить элемент Json строки, начинается течь.
Не понятно, библиотека что ли течёт...
Что интересно, когда получаю Json строку и не десериализуя её вывожу в коммент, как есть полностью, то никаких утечек нет.
Начинаю десериализовать, чтобы получить элемент Json строки, начинается течь.
Не понятно, библиотека что ли течёт...
Течет. Память под строки выделяется, байты копируются, а память не чистится.
Исходники есть?
Разрабам респект за менеджер памяти, что такое отслеживает.
Течет. Память под строки выделяется, байты копируются, а память не чистится.
Исходники есть?
Разрабам респект за менеджер памяти, что такое отслеживает.
Да вроде в библиотеке, в методе класса Deserialize, вызывается Clear ();
Исходник от сюда брал.
Да вроде в библиотеке, в методе класса Deserialize, вызывается Clear ();
Исходник от сюда брал.
Течет не там, а, скорее всего, в той dll, из которой строку получаете.
Да вроде в библиотеке, в методе класса Deserialize, вызывается Clear ();
Исходник от сюда брал.
Как CJVal создаёте? наверное new CJVal()?
Течет не там, а, скорее всего, в той dll, из которой строку получаете.
Течет не там, а, скорее всего, в той dll, из которой строку получаете.
У меня тоже сложилось такое впечатление, что течёт та функция которая читает данные.
Данные она сперва буферизует, потом передаёт, после передачи по словам разработчика либы, буфер очищается.
Но видимо есть косяк в очистке этого буфера.
Но что интересно, если не десериализовать строку в скрипте, то утечки нет, то есть проблема наступает в момент десериализации в скрипте.
Просто проверяю разные варианты возможной причины.
Исходников к сожалению нет, так как закрытая либа .lib