在调查崩溃时,我遇到了以下代码:

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/

10-12 20:03