c – 返回静态局部变量作为引用

前端之家收集整理的这篇文章主要介绍了c – 返回静态局部变量作为引用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
返回一个静态变量作为引用,直接作为指针传递给另一个函数会发生什么?显然,变量在函数返回后保持不变,但是关于这个整体概念的事情只是困扰着我.在这个时候是数据上的内存,由静态变量占用,释放?运行时神奇地注意到,当我不再需要它,像某种垃圾收集?

举个例子:

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,100,100),screen,NULL);
        SDL_Flip(screen);
    }
}

SDL_BlitSurface()返回后会发生什么事情?我看不到什么时候会被释放那么这不是一种内存泄漏吗?

解决方法

At which point is the memory on the data-sequent,occupied by the
static variable,freed? Does the runtime magically notice when I no
longer need it,like some kind of garbage collection?

它将在程序退出时被释放,而不是更早.此外,它保证将会调用析构函数.

猜你在找的C&C++相关文章