在调查崩溃时,我遇到了以下代码:
FILE * RejectFile = fopen("filename", "a+");
// other code happens
delete RejectFile;
我的理解是,您只能在由
delete
创建的对象上调用new
。授予一些旧代码确实很糟糕,所以很可能这是错误的,但是我不确定。这是有效的代码吗? 最佳答案
不,这是无效的。仅对通过delete
获得的指针使用new
。这里发生的是未定义的行为;它可能会起作用,它可能会崩溃,它可能会输出垃圾,它可能会开始播放一些音乐...
您需要使用fclose()
破坏文件句柄。
关于c++ - 您可以删除从fopen创建的FILE对象吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25734499/