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 に答える