Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在不使用“new”关键字的情况下,如何释放所创建对象的内存?_C++_Oop_Memory Management - Fatal编程技术网

C++ 在不使用“new”关键字的情况下,如何释放所创建对象的内存?

C++ 在不使用“new”关键字的情况下,如何释放所创建对象的内存?,c++,oop,memory-management,C++,Oop,Memory Management,如果我不使用new关键字创建一个对象,我应该如何释放它的内存 例如: #include "PixelPlane.h" int main(void) { PixelPlane pixel_plane(960, 540, "TITLE"); //How should the memory of this object be freed? } 像素_平面是具有自动存储持续时间的变量,即正常局部变量 当封闭范围的执行结束时,即当函数返回时,它将被释放 这是一个没有自动存储持续

如果我不使用new关键字创建一个对象,我应该如何释放它的内存

例如:

#include "PixelPlane.h"

int main(void)
{
     PixelPlane pixel_plane(960, 540, "TITLE");
     //How should the memory of this object be freed?
}


像素_平面是具有自动存储持续时间的变量,即正常局部变量

当封闭范围的执行结束时,即当函数返回时,它将被释放

这是一个没有自动存储持续时间的局部变量的示例

void my_function()
{
    static PixelPlane pixel_plane(960, 540, "TITLE");
    // pixel_plane has static storage duration - it is not freed until the program exits.
    // Also, it's only allocated once.
}
这是一个非函数的封闭范围示例:

int main(void)
{
    PixelPlane outer_pixel_plane(960, 540, "TITLE");

    {
        PixelPlane inner_pixel_plane(960, 540, "TITLE");
    } // inner_pixel_plane freed here

    // other code could go here before the end of the function

} // outer_pixel_plane freed here
像素_平面是具有自动存储持续时间的变量,即正常局部变量

当封闭范围的执行结束时,即当函数返回时,它将被释放

这是一个没有自动存储持续时间的局部变量的示例

void my_function()
{
    static PixelPlane pixel_plane(960, 540, "TITLE");
    // pixel_plane has static storage duration - it is not freed until the program exits.
    // Also, it's only allocated once.
}
这是一个非函数的封闭范围示例:

int main(void)
{
    PixelPlane outer_pixel_plane(960, 540, "TITLE");

    {
        PixelPlane inner_pixel_plane(960, 540, "TITLE");
    } // inner_pixel_plane freed here

    // other code could go here before the end of the function

} // outer_pixel_plane freed here

当可变像素_平面的生命周期结束时自动发生,范围结束时发生。这将导致对象销毁,并以实现定义的方式释放内存。看:为什么投票被否决?这个问题提出得很恰当。你不应该仅仅因为你知道答案就投票否决别人,他们不知道,而且你认为答案很简单。每一个C++的学生都需要学习这个答案,所以对于很多人来说是有用的信息。当进程结束时,SuxSIM135是的。Hyty Read:所有这些都是信息性的,但是存储持续时间的部分是最相关的。当作用域结束时会发生这种情况。这将导致对象销毁,并以实现定义的方式释放内存。看:为什么投票被否决?这个问题提出得很恰当。你不应该仅仅因为你知道答案就投票否决别人,他们不知道,而且你认为答案很简单。每一个C++的学生都需要学习这个答案,所以对于很多人来说是有用的信息。当进程终止时,SuxMim135是的。Hyty Read:所有这些都是信息性的,但是存储持续时间的部分是最相关的。当相关块的执行结束时,存储被释放,而不是在范围结束时。范围在时间上没有任何终点,只是在适当的地方。作用域是源代码中可见标识符的位置。存储持续时间或生存期是程序执行期间对象存在的时间。当关联块的执行结束时,自动对象不再存在,而不仅仅是当程序控制暂时离开该块时,如调用子例程时。当关联块的执行结束时,而不是当作用域结束时,存储被释放。范围在时间上没有任何终点,只是在适当的地方。作用域是源代码中可见标识符的位置。存储持续时间或生存期是程序执行期间对象存在的时间。当关联块的执行结束时,自动对象不再存在,而不仅仅是当程序控制暂时离开该块时,如调用子例程时。