1

我已经缩小了我的代码范围,我找到了问题的根源,就是我打开一个文件的时候。该文件确实存在,并且在编译时我没有收到任何警告或错误。

int main(int argc, const char* args[]) 
{
    cout << "Wellcome" << endl;
    cout << args[1];
    ifstream exists(args[1]);
    if(!exists)
    {
        printf("FILE NOT FOUND");
        return 1;
    }
    exists.close();
    ifstream* in;
    in->open(args[1],ios::binary|ios::in);
    //do stuff
    in->close();
    return 0;
}
4

1 回答 1

2

您已经创建了一个指向ifstream对象的指针,但您从未分配过一个指针来ifstream指向它。要解决此问题,请考虑仅对其进行堆栈分配:

ifstream in;
in.open(args[1],ios::binary|ios::in);
//do stuff
in.close();

通常,您通常不需要动态分配对象,除非您希望它们比创建它们的函数寿命更长。

希望这可以帮助!

于 2012-06-14T19:00:58.567 回答