Вокруг линии # 15195 в исходном коде, прокомментируйте следующие строки:
/*
** Windows systems have malloc_usable_size() but it is called _msize()
*/
#if !defined(HAVE_MALLOC_USABLE_SIZE) && SQLITE_OS_WIN
# define HAVE_MALLOC_USABLE_SIZE 1
# define malloc_usable_size _msize
#endif
в
/*
** Windows systems have malloc_usable_size() but it is called _msize()
#if !defined(HAVE_MALLOC_USABLE_SIZE) && SQLITE_OS_WIN
# define HAVE_MALLOC_USABLE_SIZE 1
# define malloc_usable_size _msize
#endif
*/
Это будет отключить повторное использование памяти SQLite3 таНос, и будет опираться на лучшую FastMM4 reallocmem().
См. this commit, например. для нашей реализации с открытым исходным кодом статической связи SQLite3.
Дополнительная информация:
Я думаю, что мы бы избавиться от этой проблемы в 3.7.11, как указано by this commit: новый SQLITE_WITHOUT_MSIZE
глобальный символ будет добавлен, и будет иметь возможность построить укрупнение исходный код без изменения его содержимого, просто установив соответствующее значение SQLITE_WITHOUT_MSIZE
. Между тем, проще всего прокомментировать приведенные выше строки.
Я думаю, что я был бы склонен найти код C, который хочет использовать 'msize' и попытаться удалить его, если это возможно. Я думал, что «msize» был специальным MSVC в любом случае. –
Этот хак не будет работать с более новым менеджером кучи (FastMM4), я подозреваю. Вы должны лучше полагаться на наш ответ ниже. –