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

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

举个例子:@H_403_3@

  1. SDL_Rect* XSDL_RectConstr(int x,int y,int w,int h)
  2. {
  3. static SDL_Rect rect;
  4. rect.x = x;
  5. rect.y = y;
  6. rect.w = w;
  7. rect.h = h;
  8.  
  9. return ▭
  10. }
  11.  
  12. void mainLoop()
  13. {
  14. while(isRunning)
  15. {
  16. pollEvents();
  17. SDL_BlitSurface(someSurface,XSDL_RectConstr(0,100,100),screen,NULL);
  18. SDL_Flip(screen);
  19. }
  20. }

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

解决方法

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?@H_403_3@

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

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