在不使用“ new”关键字的情况下,如何分配创建的对象的内存?

时间:2019-11-27 18:12:53

标签: 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?
}


1 个答案:

答案 0 :(得分:3)

pixel_plane是具有自动存储期限的变量(即普通的局部变量)。

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


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

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