如果在不使用“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