7

我在将文件加载到内存时遇到了麻烦,我的编译器会警告我一些我没有掌握的东西。怎么了?

C:\Users\Caroline\Desktop\Prog\literature.cpp:236:15: warning: deleting array 'char chbuffer [(((sizetype)((ssizetype)fsize)) + 1)]' [enabled by default]

功能 :

bool loadfile(string & buffer, const char fpath[])
{
    ifstream file(fpath, ios::binary);
    if(!file) return false;
    file.seekg(0, ios::end);
    long fsize = file.tellg();
    file.clear();
    file.seekg(0);
    char chbuffer[fsize + 1];
    file.read(chbuffer, fsize);
    buffer = chbuffer;
    delete [] chbuffer;
    return true;
}
4

1 回答 1

12

您不能delete自动分配数组。删除delete [] chbuffer;声明。

通常,delete仅在与 配对时使用new。你可以这样分配chbuffer

char *chbuffer = new char[fsize + 1];

在这种情况下,您想要使用delete [] chbuffer.

于 2013-01-25T00:47:46.010 回答