-1
我有这种读取文件的方法,但是当我尝试运行它时,它给我一个return (char *) buffer
的错误。如何修复函数返回C中局部变量错误的地址?
错误:warning: function returns address of local variable [-Wreturn-local-addr]
char * readFile(char* filename, size_t chunk) {
FILE *proc;
size_t len = chunk;
char * buffer[len];
proc = fopen(filename, "r");
if(proc) {
if(buffer)
fread(buffer, 1, len, proc);
fclose(proc);
return (char *) buffer;
}return "error";
}
我应该之外的主要方法这个方法之前,创建缓冲? PS:我知道这可能是一个重复的问题。
所以你想要一个'char *'数组?那很有意思。 – Bathsheba
不清楚为什么你有'char * buffer [len];'然后你通过转换返回一个'char *'?为避免返回局部变量指针,可以(1)在函数调用之前创建缓冲区,并将缓冲区地址传递给函数,或者(2)函数可以使用'malloc'动态分配缓冲区并返回该指针只要调用者在不再需要时释放内存。选项2更容易出现内存泄漏。 – lurker
@Bathsheba是的,如在一个字符串字符数组。 – Anonymous