我有一個奇怪的問題,分配在c + +內存 我創建一個緩衝區並將文件內容讀入它。 問題是分配是不正確的,並在打印結束時有怪異的字符... 該文件的內容是「你好」... ... 我坐在它幾個小時...什麼可以是問題? :(C++分配內存問題
void main()
{
FILE *fp;
char *buffer;
long file_size;
size_t result;
fp = fopen("input.txt","r");
if (fp == NULL) { fputs("File Error",stderr); exit(1); }
//get file size
fseek(fp, 0, SEEK_END);
file_size = ftell(fp);
rewind(fp);
//allocate memory to contain the whole file size
buffer = new char[file_size];
if (buffer == NULL) { fputs("Cannot allocate memory space",stderr); exit(2); }
//copy the file into the buffer
result = fread(buffer, 1, file_size, fp);
if (result != file_size) { fputs("Reading error",stderr); exit(3); }
cout<<buffer;
fclose(fp);
delete buffer;
}
一個備註:緩衝器是一個數組。您應該使用「delete []緩衝區」將其刪除。 – 2010-02-08 12:56:52
您正在使用C和C++功能的奇怪組合。我真的推薦你使用「純粹的C++」方法:class ifstream用於文件輸入,class string用於存儲文本。另外,不需要從main調用exit:只需使用「return EXIT_CODE」; – Manuel 2010-02-08 13:16:55
另外,在C++中main()應該總是返回「int」。因此,最小的有效C++程序正好是_int main(){} _(return可以省略,但應該只在沒有錯誤的情況下) – 2010-02-08 13:24:42