-2

Here is my code,

char buf[1];
int count=0;
while( Read(fileID, buf, 1)==1)
{
        contents = (char *)realloc(contents,(iVal+1)*sizeof(char));
        contents[count]=buf[0];
        count++;
}

Now that I can not use libc, how would I do the reallocation. The problem is that I do not know the size of the file I am reading so I have reallocate. The same problem exists with malloc as well.

4

2 回答 2

1

如果您没有libc或没有其他具有内存管理功能的库(malloc/realloc/free 等价物),您必须编写自己的内存管理器。如果您正在为 Linux 编写内核模块,您可能可以访问,kmalloc(9)甚至kfree(9)可能访问krealloc. 如果没有,那么您必须编写自己的内存管理函数。

于 2013-02-12T16:16:36.127 回答
0

lseek 可以在您读取任何内容之前告诉您文件的大小,因此您不需要 realloc() 循环。mmap() 可以将其带入内存,因此您也不需要 malloc()/free()。

于 2013-02-12T16:33:17.510 回答