首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果流失败了,因为我没有文件描述符了

如果流失败了,因为我没有文件描述符了
EN

Stack Overflow用户
提问于 2014-04-09 17:54:22
回答 1查看 147关注 0票数 0

我在OSX10.9.2上使用Xcode5 5/clang。我的节目开始搞砸

代码语言:javascript
复制
std::ifstream file(path);
if (!file.is_open())
    throw std::runtime_error("somethings wrong");

几百(或千?)打开和关闭文件。当发生这种情况时,我不能再打开任何文件,无论是使用fstream还是使用fopen(),这使我认为我已经没有文件描述符了。根据ifstream上的文档,当fstream对象被销毁时,文件将被关闭。我所有的fstream对象都在堆栈上,我从不用new分配任何对象,所以如果我的堆栈被正确清理,我就不必调用fstream::close(),因为当对象超出作用域时,文件就关闭了。

但很明显,我还在某处泄露文件描述符。

问题: 1.即使按照计划清理了蒸汽对象,文件描述符也会用完吗?比如,文件描述符在关闭后是否可以被重用,或者一旦被使用和关闭,它们会永远消失吗? 2.有什么方法可以泄漏fstream对象,让它们打开,即使它们都存在于我的堆栈中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-09 18:15:07

不过,我发现了我的问题。

我根本没有泄漏fstream对象,但是我一直在疯狂地泄漏sqlite句柄。我发现它是通过仔细使用

代码语言:javascript
复制
lsof -p my_processes_pid | wc

lsof是一个非常有用的命令!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22970334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档