相关疑难解决方法(0)

理解术语和概念的含义 - RAII(资源获取是初始化)

您能否请C++开发人员详细介绍RAII是什么,为什么重要,以及它是否与其他语言有任何关联?

知道一点点.我相信它代表"资源获取是初始化".但是,这个名称并不符合我对RAII的理解(可能不正确):我得到的印象是RAII是一种初始化堆栈中对象的方式,当这些变量超出范围时,析构函数会自动被称为导致资源被清理.

那么为什么不称为"使用堆栈触发清理"(UTSTTC :)?你怎么从那里到"RAII"?

你怎么能在堆栈上创建一些东西来清理堆上的东西呢?此外,是否有不能使用RAII的情况?你有没有发现自己希望收集垃圾?至少一个垃圾收集器,你可以使用一些对象,同时让其他人管理?

谢谢.

c++ garbage-collection raii resource-management

108
推荐指数
7
解决办法
1万
查看次数

为什么RAII如此命名?

我对这个习语的感觉是它很有用,因为它确保在使用它们的对象超出范围之后释放资源.

换句话说,它更多的是关于去除去初始化,那么为什么这个成语被命名为它的方式呢?

raii

8
推荐指数
1
解决办法
869
查看次数

初始化`int * p = malloc(1000);`也可以用RAII风格处理吗?

我从 RAII 了解到的是,每当您需要手动分配内存时,new您也需要释放它。因此,与其手动释放它,不如创建带有构造函数和析构函数的类来完成这项工作。

那么,下面的人在谈论什么?

出自:术语的含义——资源获取即初始化

问题是 int * p = malloc(1000); 也是(整数)对象的初始化,但这不是我们在 RAII 上下文中所指的那种初始化。...

@弗雷德:确实如此。int* 不是 RAII 类型,因为它不进行清理。所以这不是 RAII 的意思,即使它是 RAII 字面上的意思。

好吧,我知道malloc在 C 中使用,并且new在 C++ 中使用。

c++ raii

2
推荐指数
2
解决办法
1337
查看次数