Что происходит со статической переменной при возврате в качестве ссылки и передается как указатель непосредственно на другую функцию? Очевидно, переменная сохраняется после возвращения функции, но что-то об этой целой концепции меня просто беспокоит. В какой момент происходит освобождение памяти на секвенции данных, занятой статической переменной? Является ли время выполнения волшебным, когда мне это больше не нужно, например, какая-то сборка мусора?
Чтобы привести пример:
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()? Я не вижу, когда это будет освобождено. Разве это не будет какой-то утечкой памяти?