我有下面的代碼片段,它在'str'中的分配期間崩潰,這是一個動態分配。爲什麼此代碼在動態分配期間崩潰?
char *str;
int file_size;
FILE *fptr;
if (!(fptr = fopen(filename, "r"))) goto error1;
if ((fseek(fptr, 0L, SEEK_END) != 0)) goto error2;
if (!(file_size=ftell(fptr))) goto error2;
if ((fseek(fptr, 0L, SEEK_SET) != 0)) goto error2;
str = (char*)malloc(file_size+1);
if (fread(str, file_size, 1, fptr) != 1) {
free(str);
goto error2;
}
str[file_size] = '\0';
fclose(fptr);
FILE_SIZE是非零,非負少-140值
我使用ARM。這實際上在我的intel電腦上運行,但不是在arm機器上運行。
在分配之前,file_size會給你什麼? – karlipoppins 2009-06-05 09:18:48
其非零值,非負值。 – giantKamote 2009-06-05 10:15:14
這也許可以幫助你:http://xkcd.com/292 – Kieveli 2009-06-05 11:31:18