如果在C++中在一个块中创建对象,它会被存储在哪里
对象可以存储在两个部分的内存中:
- 栈 - 栈内存被声明在块/函数中的所有成员使用。注意,main函数也是一个函数。
- 堆 - 此内存未被使用,可用于在运行时动态分配内存。
在块或函数内创建的对象的作用域仅限于创建它的块内。
- 在块内创建的对象将存储在 栈 中,并且当函数/块退出时,对象将被销毁并从栈中删除。
- 但是,如果我们通过 动态内存分配 在运行时创建对象,则对象将存储在 堆 中。这是使用 new 运算符完成的。在这种情况下,我们需要使用 delete 运算符显式地销毁对象。
示例:
输出:
Inside Block1…
矩形的长度是:2
矩形的宽度是:3
矩形的析构函数
随着块的退出,存储在栈中的对象的析构函数被自动调用。
Inside Block2
矩形的长度是:5
矩形的宽度是:6
矩形的析构函数
矩形的长度是:0
矩形的宽度是:0
以下是显示对象存储位置的程序:
输出