【问题标题】:catching an error for insufficient memory bad_alloc() in an infinite loop in C++ on linux在 Linux 上的 C++ 中的无限循环中捕获内存不足 bad_alloc() 的错误
【发布时间】:2017-11-29 11:17:22
【问题描述】:

所以我有一个无限循环,里面有一个 fstream,看起来或多或少像这样:

int main(){
    while(1){
    StringData() 
    //above is a function with fstream that writes data into a new file    
    return 0;
}

CSV 文件写入 U 盘。我想预见程序将超过 U 盘的内存容量并捕获将发生的错误。

我在某处读到它会抛出 bad_alloc(),我的想法是添加 try()catch() for 循环并在错误出现时完全退出程序。

我什至不确定是否会出现确切的错误。有人可以帮我解决捕获异常吗?

谢谢你,祝你好运!

【问题讨论】:

标签: c++ linux exception infinite-loop bad-alloc


【解决方案1】:

在这种情况下,USB 记忆棒被视为磁盘,因此会因空间不足错误而不是内存而失败。

fstream 将在无法向磁盘写入更多内容时抛出 std::ifstream::failure。 (由异常掩码控制)。

【讨论】:

    猜你喜欢
    • 2013-03-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多