Все,
У меня есть программа, которая печатает в поток. Мне нужно буферизовать этот поток в памяти, а затем распечатать каждую строку по мере необходимости в реальном файле позже.
Так как вызовы функции fprintf()
должны иметь указатель FILE *
, мне нужно иметь адресное пространство указанного указателя в памяти. Я использовал функцию open_memstream()
, но она не поддерживается в Windows.
Поскольку malloc()
возвращает указатель void *
, который волшебным образом приводит к нужному указателю по мере необходимости, могу ли я использовать его в качестве указателя FILE *
? Если да, то какие предостережения? Нужно ли мне следить за нехваткой места?
Обновление:
После нахождения исходного кода для open_memstream()
, что оказалось сложнее, чем должно было быть, похоже, что они выполняют файловый поток в распределенное пространство.
Поскольку это так, и у меня есть их исходный код, я собираюсь проверить, не смогу ли я получить рабочую версию для кросс-компиляции для Windows с mingw.