我只是不明白为什么这总是给我一个错误。
如果我只是在中读取文件,没有将最后一个索引分配给空终止符,我可以在使用后释放内存。但是,如果我确实将最后一次索引分配给了空终止符并在使用后尝试释放数据,我会遇到错误。
char *readFileToString(const char *file)
{
char * buffer = 0;
long length;
FILE * f = fopen (file, "rb");
if(f == NULL)
printf("ERROR::FILE:FILE_NOT_SUCCESFULLY_READ\n");
fseek (f, 0, SEEK_END);
length = ftell (f);
fseek (f, 0, SEEK_SET);
buffer = malloc (length);
if(buffer == NULL) printf("Error alocating buffer memory");
fread (buffer, 1, length, f);
fclose (f);
buffer[length] = '\0'; // Offending line <------------------ code works if we don't do this
return buffer;
}
int main()
{
char *t = readFileToString("test");
printf("%s", t);
free(t); // ERROR IF WE CHANGE LAST BUFFER CHARACTER TO null terminator
}