).

я есть код, который по разным причинам я пытаюсь перенести из среды выполнения C на тот, который использует Windows Heap API. Я столкнулся с проблемой: если я перенаправитьmalloc/calloc/realloc/free звонки вHeapAlloc/HeapReAlloc/HeapFree (с участиемGetProcessHeap для дескриптора) память, кажется, выделена правильно (не возвращен неверный указатель и не выданы исключения), но переносимая мной библиотека говорит «не удалось выделить память» по какой-то причине.

Я пробовал это как с Microsoft CRT (который использует API кучи), так и с библиотекой времени выполнения другой компании (которая использует API глобальной памяти внизу); malloc для обоих из них хорошо работает с библиотекой, но по какой-то причине использование Heap API напрямую не работает.

Я проверил, что выделения не слишком велики (> = 0x7FFF8 байт), и это не так.

Единственная проблема, о которой я могу думать, это выравнивание памяти; это тот случай? Или, кроме этого, есть ли принципиальная разница между API кучи и API памяти CRT, о которой я не знаю?

Если так, то, что это? А если нет, то почемустатический Microsoft CRT (входит в состав Visual Studio) предпринять некоторые дополнительные шаги вmalloc/calloc перед звонкомHeapAlloc? Я подозреваю, что есть разница, но я не могу думать о том, что это может быть.

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос