C++ LLVM IO错误-写入bc文件时出错

C++ LLVM IO错误-写入bc文件时出错,c++,ios,llvm,C++,Ios,Llvm,尝试删除原始组时出错 void LLVMGenerator::SaveModule(string path) { std::string ErrInfo = ""; llvm::raw_ostream *out = new llvm::raw_fd_ostream(path.c_str(), ErrInfo, llvm::sys::fs::F_None); llvm::WriteBitcodeToFile(_mod, *out); out-&g

尝试删除原始组时出错

void LLVMGenerator::SaveModule(string path) {

    std::string ErrInfo = "";
    llvm::raw_ostream *out =
        new llvm::raw_fd_ostream(path.c_str(), ErrInfo, llvm::sys::fs::F_None);
    llvm::WriteBitcodeToFile(_mod, *out);

    out->flush();
    delete out; // LLVM ERROR: IO failure on output stream.

    return;
}
请给我一些提示-如何解决这个小问题?
操作系统Ubuntu 13.10 x64,LLVM 3.4

raw\u fd\u ostream
对象上发生了一些IO错误-可能底层的
writev
调用遇到了不可恢复的错误
raw_fd_ostream
在这种情况下的行为是打开指示发生错误的标志,如果该标志在销毁过程中仍处于打开状态,则会报告致命错误(=崩溃)


如果要避免此崩溃,可以在销毁对象之前调用对象上的
clear\u error()
;当然,建议您首先通过
has_error()
检查错误是否发生,并尝试处理它。

您遇到的第一个问题,即使与您的问题无关,也是您正在使用指针。实际上不需要指针和
new
。事实上,在C++中,你应该尽量避免指针。还要注意,析构函数为您调用
flush
。谢谢。实际上,我只是从BrainF LLVM Example复制了一些代码好的,我会尝试处理它。谢谢你,奥克!