数据都存放在哪些区

       数据都存放在哪些区?我第一印象,这样一道笔试题,考察的内容很多啊。

       数据存放到哪里,不仅仅是一个问题了,还牵涉到作用域,以及内存管理的感念,考察的挺全面的。

       平时我们经常会根据作用域,说这个变量是局部的,静态的,全局的等等,那么这些东西是怎么定义或存放呢?

       (1)局部变量:类的成员变量,函数内部声明的变量都是局部变量(包括函数的参数列表,通过数据拷贝),这些都存放在栈区,一般由系统进行释放;

       (2)全局变量:在类外或者函数外声明的变量,其他地方用时extern一下变量声明就可以用,这样的一般存放在全局区或者静态区中,也由系统进行释放;

       (3)静态变量:static一下就静态的了,这样的变量隶属于整个应用程序的声明周期,也存放在全局区或静态区中,如果是非指针的话,由系统释放,而如果是我们通过new或者malloc,那么只能由我们手动释放(哎这样的new/malloc后,又存放到堆heap中了。注意了,一句话,new或者malloc的都是堆中存放,并且自己申请,必须自己释放,要不内存泄漏)。



        说到内存泄漏问题,不得不说一下常见的内存泄漏缘由(还是作用域)。经常看见一些不成熟的代码结构,譬如,需要申请空间的对象在函数内存声明,你都放到函数内部了,还不在内部进行释放,悲惨吧!或者想在外面用,但是又经常在内部被不断申请进行指针重置,外面又无法确认指针进行释放,不漏才怪!

        一句话,你new或malloc的指针放到类成员中或者类成员中的列表中,这不就可以通过维护类进而对内存进行维护,不会丢失了!此外,别free delete对象后就完事了,要对别人负责,不然别人调用后不仅没有指针判空的依据,还可能搞成悬浮指针,最好指针声明前NULL,释放后NULL。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值