Можно ли заменить вызов open_memstream на malloc и неявное приведение типов?

Все,

У меня есть программа, которая печатает в поток. Мне нужно буферизовать этот поток в памяти, а затем распечатать каждую строку по мере необходимости в реальном файле позже.

Так как вызовы функции fprintf()должны иметь указатель FILE *, мне нужно иметь адресное пространство указанного указателя в памяти. Я использовал функцию open_memstream(), но она не поддерживается в Windows.

Поскольку malloc()возвращает указатель void *, который волшебным образом приводит к нужному указателю по мере необходимости, могу ли я использовать его в качестве указателя FILE *? Если да, то какие предостережения? Нужно ли мне следить за нехваткой места?

Обновление:

После нахождения исходного кода для open_memstream(), что оказалось сложнее, чем должно было быть, похоже, что они выполняют файловый поток в распределенное пространство.

Поскольку это так, и у меня есть их исходный код, я собираюсь проверить, не смогу ли я получить рабочую версию для кросс-компиляции для Windows с mingw.

6
задан dmitry_romanov 23 October 2014 в 10:33
поделиться