我不能使用libc,但我必须使用C重新分配和分配内存

时间:2013-02-12 16:01:14

标签: c linux

这是我的代码,

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也存在同样的问题。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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