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

例:

#include "PixelPlane.h"

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


最佳答案

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

09-28 06:55