加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 03:13:08 所属栏目:百科 来源:网络整理
导读:返回一个静态变量作为引用,直接作为指针传递给另一个函数会发生什么?显然,变量在函数返回后保持不变,但是关于这个整体概念的事情只是困扰着我.在这个时候是数据上的内存,由静态变量占用,释放?运行时神奇地注意到,当我不再需要它,像某种垃圾收集? 举个例子
返回一个静态变量作为引用,直接作为指针传递给另一个函数会发生什么?显然,变量在函数返回后保持不变,但是关于这个整体概念的事情只是困扰着我.在这个时候是数据上的内存,由静态变量占用,释放?运行时神奇地注意到,当我不再需要它,像某种垃圾收集?

举个例子:

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?

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读