Я хочу прочитать несколько файлов и добавить строки текста к содержанию.Я хотел бы сохранить новый измененный контент в буфере.Размер файла может быть от 0 до 16 МБ.Добавляя строки текста, файл также может быть намного больше, в зависимости от содержимого.
В начале я резервирую 512 байт памяти с помощью calloc.
wchar_t *buffer = (wchar_t*)calloc(512, sizeof(wchar_t));
При каждом добавлениитекст в память, я проверяю, достаточен ли размер зарезервированной памяти с помощью функции realloc.Это работает довольно надежно для маленьких файлов, только с большими файлами программа вылетает.Debbug, к сожалению, невозможен из-за созвездия.
Теперь мой вопрос.Если я неоднократно расширяю память с помощью realloc, но это не удается, верно ли утверждение if с буфером == NULL?Буфер теоретически не может быть нулевым, поскольку он уже был заполнен ранее.
Как я могу отловить ошибку или исправить ее?
size_t memoryallocated = 512;
wchar_t *buffer = (wchar_t*)calloc(memoryallocated , sizeof(wchar_t));
while (memoryuse + contenlength >= memoryallocated)
{
memoryallocated *= 2;
buffer = (wchar_t *)realloc(buffer, memoryallocated* sizeof(wchar_t));
if ((buffer == NULL))
{
return NULL;
}
}
wmemcpy(buffer + memoryuse, contentbuf,contenlength);
memoryuse += contenlength; // thx @pm100
return buffer;