抱歉,标题含糊。我目前正在重构团队中以前的开发人员编写的一些代码。当前,我们正在使用malloc在要写入的内存中分配X空间。char* foo = NULL;foo = (char*)malloc((uint32_t)fSize + 1);bar = (int64_t)fread(foo, (uint32_t)fSize, 1, fd);foo[fSize] = '\0';其中fSize是我们正在读取的.sql文件的大小man fread告诉我它将从fd(流)中读取1个大小为fSize的项目,并写入foo指向的内存位置。本质上,我试图找到一种无需使用malloc即可保持与现在相同功能的方法。不幸的是,我没有太多的内存分配经验,这是我第一次遇到内存分配问题,因此我们将不胜感激! 最佳答案 如果要处理简单类型(char),则可以轻松地在堆栈上分配内存并在其中读取:char foo[fSize+1]; // '+1' is not required, but why not? =)bar = (int64_t)fread( foo, (uint32_t)fSize, 1, fd);对于更复杂的结构,您可能需要先声明这些结构,然后再用于内存分配,堆栈上分配的好处是,函数结束时,自动处理了释放,因此您不必调用明确地。
10-08 20:02