这是我的代码,
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++;
}
既然我不能使用libc,我该如何进行重新分配。问题是我不知道我正在阅读的文件的大小,所以我重新分配。 malloc也存在同样的问题。
答案 0 :(得分:1)
如果您没有libc
或其他具有内存管理功能的库(malloc / realloc / free等效项),则必须编写自己的内存管理器。
如果您正在为Linux编写内核模块,则可能可以访问kmalloc(9)
和kfree(9)
,甚至可能krealloc
。如果没有,那么你必须编写自己的内存管理功能。
答案 1 :(得分:0)
lseek可以在读取任何内容之前告诉您文件的大小,因此您不需要realloc()循环。 mmap()可以将它带入内存,因此你也不需要malloc()/ free()。