Я создал многоплатформенное приложение, использующее FLTK, которое использует функциональность сериализации ускоренного текста, чтобы обеспечить переносимую кросс-платформенную документацию, сохраняющую функциональность. (Если это плохая идея: слишком поздно я боюсь!).ускорение десериализации текста сбой на 32-битной оконной машине
Это отлично работает на Mac и на машине Windows, на которой я скомпилировал ее. Однако я использовал скомпилированный двоичный файл на более низкоразмерной машине Windows и, несмотря на то, что он работал отлично со всеми другими функциями, при открытии файлов сохранения (т. Е. При десериализации) программа сбой.
Глядя на использовании памяти в диспетчере задач на нижней specced машины Windows, и на мониторе активности я заметил это различного поведение
Окно: использования памяти является проблемой, она продолжает подниматься, пока программа не использует вокруг 800 Мб ОЗУ, а затем сбой программы
Mac: Использование памяти для одного и того же скомпилированного кода при десериализации одного и того же файла достигает 40 Мб.
Бинарный файл Windows - это Win32 (32 бит), и я проверил такое же нормальное рабочее поведение как в 64-битной, так и в 32-битной версиях Mac. Весь код был связан с использованием статических библиотек (кроме случаев, когда это невозможно, например, для CRT в Mac OS).
Зачем использовать тот же самый код с использованием функции boost, которая содержится в файле только заголовка, приводит к этому обратному использованию памяти на компьютере Windows (он отлично работал на машине с более высоким разрешением, хотя я не отслеживал использование памяти), в то время как все остальные функции программы работают нормально?
И что я могу сделать?
Спасибо.
Чтобы сузить область поиска, попробуйте просто простую консольную программу, чтобы проверить сериализацию boost, аналогичную тому, что вы написали в GUI-версии. Это также утечка памяти? – cup