百科问答小站 logo
百科问答小站 font logo



C++,全局变量如果用new了,需要delete吗? 第1页

  

user avatar   doctor-guru 网友的相关建议: 
      

很多年前,我面试,信心满满地将一个益智游戏的破解算法程序给面试官看,那个程序在界面上设置一些参数,就能计算出益智游戏每关走法,算我的一个得意之作。

面试官看了我的代码,没有为我能想出这么精妙的破解算法而惊讶,而是摇摇头,说我有new的指针不释放。我说那个指针类似全局变量,本来程序启动new一下,关程序的时候系统就给它释放了,不需要脱裤子放屁手动给它释放。

那个面试官反驳说,不能什么都交给系统啊。

后来我也接受教训,以后形成强迫症,有new必有delete。而且,那种全局new看样子不需要delete的变量,仅限于我们自己做的手工作品。如果是大型项目,不建议这样做。就算一开始设计的时候确定就是程序启动new,程序结束delete,也不能保证后面因为需求增加、改变而改变原有的设计,很容易导致bug。建议大型项目使用智能指针。


user avatar   haozhi-yang-41 网友的相关建议: 
      

这个东西不是看全局变量还是什么别的,而是看生存期

如果一块内存的生存期是跟随进程级别的,那么确实可以不释放:很多服务端程序都有类似的设计。

当然,也有例外的:例如说如果你的对象涉及一些内核资源、文件资源等,那么就不一定能指望进程退出后os能干净回收,这时候就必须在进程退出时自己先清理掉。


user avatar   pansz 网友的相关建议: 
      

你妈和你爸吵架时,有人过来扇了你妈一巴掌。会发生什么?




  

相关话题

  c/c++怎么把一个bool数组(刚好8个元素)转换成char? 
  为什么国内每天都在说 Python 有多好,真正招聘的时候却不需要呢? 
  晚上脑子里也想着bug,睡不好怎么办? 
  一个程序员多年累计编写一百万行代码是什么体验? 
  tkinter可以做出多复杂的界面? 
  大型项目中面向过程思想 vs 面向对象思想,哪种开发效率更高? 
  Atom, Vim, Visual Studio Code, Emacs 哪个好? 
  请问这段C++代码是未定义行为吗? 
  C 语言线程间怎么通信? 
  在网吧写代码是怎样一种体验? 

前一个讨论
美国太空部队确认中国云海一号(02)卫星解体与空间碎片碰撞有关,具体情况如何?
下一个讨论
1 月 15 日天津新增 33 例本土病例,危重型 1 例,第三轮核酸检出 59 例阳性,情况如何?





© 2024-05-19 - tinynew.org. All Rights Reserved.
© 2024-05-19 - tinynew.org. 保留所有权利