当作为引用返回并作为指针直接传递给另一个函数时,静态变量会发生什么?显然,该变量在函数返回后仍然存在,但是关于整个概念的某些事情让我感到困扰。数据序列上被静态变量占用的内存在哪一点被释放?当我不再需要它时,运行时是否会神奇地注意到它,比如某种垃圾收集?
举个例子:
SDL_Rect* XSDL_RectConstr(int x, int y, int w, int h)
{
static SDL_Rect rect;
rect.x = x;
rect.y = y;
rect.w = w;
rect.h = h;
return ▭
}
void mainLoop()
{
while(isRunning)
{
pollEvents();
SDL_BlitSurface(someSurface, XSDL_RectConstr(0, 0, 100, 100), screen, NULL);
SDL_Flip(screen);
}
}
rect
SDL_BlitSurface() 返回后会发生什么?我看不到它什么时候会被释放。那这不是某种内存泄漏吗?