0

我最近了解了 RAII 的出色内存管理技术,这似乎比我几年前在学校学到的新/删除头痛要干净得多(在这期间我没有看过太多 C++)。

我试图追查何时将这项伟大的技术添加到 C++ 中。它总是在那里,我只是错过了备忘录吗?支持 RAII 的 C++ 标准的最旧版本是什么?

[更新:好的,我现在意识到为什么这不是一个理想的 SO 问题——我没有实用的方法来验证任何给定的答案是否正确!尽管如此,我仍然对了解答案非常感兴趣,并且我认为大多数人的意见都是正确的。

我听到的是它一直都在那里,我不怀疑这是真的,但我不禁要问,为什么我的旧教科书都没有提到它?我刚刚检查了 Meyers 的 Effective C++ 2nd edition,我很方便,今晚将检查较旧的文本。也许这个词是最近才创造出来的,而这项技术早就存在了?]

4

3 回答 3

3

“RAII”这个词到底是什么时候被创造出来的,我不确定。但这项技术本身从 C++ 发明的那一刻起就存在于 C++ 中,大约是 1979 年。

C++ ISO 标准的第一个版本于 1998 年发布。

于 2013-11-01T03:59:25.977 回答
2

任何具有自动析构函数调用的范围变量的语言都可以执行 RAII。C++ 从一开始就有这个概念,因为当执行离开声明变量的范围时调用析构函数从一开始就在 C++ 中。

于 2013-11-01T03:58:08.070 回答
2

维基百科关于 Stroustrup 发明 RAII 的说法得到了对他在 1994 年出版的《C++ 设计与进化》一书的引用的支持。

我没有要检查的副本,但它似乎至少是从这个时候开始的。

于 2013-11-01T04:00:50.903 回答