【发布时间】:2011-10-07 01:47:22
【问题描述】:
我对 C++ 中内存管理的工作方式有点困惑,我理解当您使用指针(新建/删除)时,但在帧分配方面我迷失了。
假设我有一个简单的类(使用 QT 类)
class Demo {
public:
Demo();
~Demo();
QString AString() const;
void setAString(const QString &value);
private:
QString aString;
};
我使用指针分配它
Demo *testInst = new Demo();
现在我明白当我调用“删除 testInst;”时这已被释放,但我对帧分配中超出范围的部分感到困惑。这是否意味着当我调用 delete 时,类中所有非指针的对象都会自动释放,还是我必须在 Demo 类的解构器中进行特定的内存管理?或者这是否意味着如果我离开班级,这些变量就会被释放?
我是 C++ 新手,来自 .NET 背景,所以我对手动内存管理不是 100% 了解。
【问题讨论】:
-
您在哪里找到术语“帧分配”?除了上面的正常堆外,没有任何迹象。
-
我认为它是 MFC 中更多使用的术语,如果我没有得到正确的定义,很抱歉,我在 Qt 中做事,所以我只是想知道非指针对象(QString)是如何工作的与指针对象(QString *)相比,我需要手动执行任何操作来释放它们还是删除指针对象会删除未使用 new 分配的对象?
标签: c++