15得票5回答
关闭嵌套的Reader

当从文本文件中读取内容时,通常会创建一个 FileReader 并将其嵌套在一个 BufferedReader 中。我应该在完成读取后关闭两个 reader 中的哪一个呢?这有什么区别吗?FileReader fr = null; BufferedReader br = null; try {...

44得票5回答
“Rule of 5”(对于构造函数和析构函数)已经过时了吗?

“5规则”指的是,如果一个类有用户声明的析构函数、拷贝构造函数、拷贝赋值构造函数、移动构造函数或移动赋值构造函数,则必须具备其他四个函数。 但是今天我突然想到:你何时需要自定义析构函数、拷贝构造函数、拷贝赋值构造函数、移动构造函数或移动赋值构造函数呢? 在我看来,隐式构造函数/析构函数对于...

17得票3回答
“打开连接”实际上是什么意思?

我曾试图向某人解释为什么 数据库连接 实现了 IDisposable 接口,但是后来我意识到我其实不知道 "打开一个连接" 具体指什么。 因此我的问题是 - 当 C# 打开一个连接时,它实际上在做什么? 谢谢。

7得票1回答
为什么Scala标准库中没有ARM? (注:该问题涉及IT技术)

为什么Scala标准库中没有像Clojure的with-open一样提供ARM(Automatic Resource Management)呢?

105得票10回答
Scala有哪些自动资源管理的替代方案?

我在网上看到很多关于Scala中ARM(自动资源管理)的例子。似乎编写一个这样的例子是成长过程中必经的,但大多数看起来几乎都一样。不过,我确实看到了一个使用continuations的相当酷的例子。 无论如何,许多代码都存在某种类型的缺陷,因此我认为在Stack Overflow上有一个参考...

7得票2回答
RAII函数对和模板特化的包装器

我为一对初始化和释放资源的 C 函数编写了一个 RAII 包装器,它在大多数情况下都能很好地服务于我。 #include <GL/glfw.h> #include <string> #include <functional> #include <st...

27得票18回答
如果程序已经退出,为什么还需要免费资源?

许多库,例如SDL等,在其教程中调用方法来在退出程序之前释放资源,但据我所知,大多数操作系统在退出进程时会释放所有内存,那么如果应用程序将要退出,为什么我还需要费心去释放它们呢? 许多库的教程中包括在退出程序之前释放资源的方法调用,主要出于以下原因:虽然大多数操作系统在进程终止时会回收所有内...

17得票8回答
在C++中,我应该使用哪个包装类来进行自动化资源管理?

我是一名C++爱好者,正在编写一些Win32 API代码,其中有许多句柄和奇怪的复合分配对象。所以我想知道,是否有一些包装器类可以使资源管理更容易? 例如,当我想要加载一些数据时,我使用CreateFile()打开文件并获得一个HANDLE。完成后,我应调用CloseHandle()来关闭它...

17得票5回答
Java中的RAII...资源释放总是如此丑陋吗?

我刚刚使用了Java文件系统API,并编写了以下函数,用于复制二进制文件。原始代码来源于网络,但我添加了try/catch/finally语句以确保,在发生错误时,缓冲流将在退出函数前关闭(因此,我的操作系统资源得到释放)。 我简化了函数以显示其模式: public static void...

20得票6回答
如果delete[] p失败会发生什么?

假设我有一个指向动态分配的包含10个元素的数组的指针: T* p = new T[10]; 稍后,我想释放那个数组: delete[] p; 如果一个 T 析构函数抛出异常会发生什么?其他元素是否仍然被销毁?内存是否会被释放?异常是否会传播,还是程序执行将被终止? 同样地,当 s...