美文网首页
关于内存管理的疑问

关于内存管理的疑问

作者: GrayWolf | 来源:发表于2016-04-20 17:19 被阅读0次

今天偶然间看到一个博客 关于对象指针的,里面的说法和我以前理解的内存管理的知识有很大的不同。

class persion;persion apersion;persion* pa=&apersion; //指向类persion对象的指针  
**类对象**是在内存中为这个类的分配**一块内存**,指针就是指这块一块内存的开始!对象只能事先定义好,
只能在定义的区域内使用,生命周期有限,而指针可以在使用时创建,使用的范围为全局,
可以保存只到你不在使用他时再删除。
指针就是一个整数,这个整数就是一个地址,这个地址是某个数据块的地址,通过它,可以访问那块内存,
总之,指针就是地址了。类的对象:用的是内存栈,是个局部的临时变量.类的指针:用的是内存堆,是个永久变量,
除非你释放它.**当类是有虚函数的基类,Func是它的一个虚函数,则调用Func时:**  
**类的对象:调用的是它自己的Func;****  
**类的指针:调用的是分配给它空间时那种类的Func;要发挥虚函数的强大作用,必须使用指针来访问对象.  
 -by任智康

这个是博客里面的内容和我以前的理解有比较大的出入。
我所理解的内存管理的知识是:

实例化对象的时候 为这个对象分配的内存是在堆区, 其他的局部变量存放在栈区,指向对象的指针也存放在栈区 ,
代码结束的时候所有局部变量被回收,指向对象的指针也被回收。 对象的内存有程序人员释放。

一脸懵逼的样子去问了问李帅,他的解释是:你说的是显示 new 出来的对象A a =new A()。截图里说的 是声明的对象 A a;
是不是好像没听懂,好吧,我也没看懂。然后自己找了一圈,又找到个好东西。


,
这样一来帅哥的解释就能看懂了,A a; A *a = new a();
两种方式皆可实例化,无new时,是在栈内分配内存, 而一般情况下的实例化对象时是在堆区内分配内存,且必须用delete释放内存。 而栈区内分配的内存由系统自动释放。

相关文章

  • 关于内存管理的疑问

    今天偶然间看到一个博客 关于对象指针的,里面的说法和我以前理解的内存管理的知识有很大的不同。 这个是博客里面的内容...

  • 内存管理:疑问

    使用CADisplayLink、NSTimer有什么注意点? 循环引用,事件不准确 介绍下内存的几大区域 代码区、...

  • 内存管理

    内存管理 关于内存的描述

  • Android性能优化-内存泄漏的几个案例

    JVM内存管理 Java采用GC进行内存管理。深入的JVM内存管理知识,推荐《深入理解Java虚拟机》。 关于内存...

  • 关于内存管理

    首先明确一点什么是自动引用计数 自动引用计数器是在ios5以后增加的一项内存管理机制,是指内存管理中对引用采取自动...

  • 在CentOS7上手动释放内存cache和脚本定时释放

    前言 总有很多朋友对于Linux的内存管理有疑问,当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束...

  • Objective-C 内存管理基础

    前言 之前的两篇拙文C语言-内存管理基础、C语言-内存管理深入 介绍了关于C语言在内存管理方面的相关知识。但是对于...

  • Swift 内存管理

    Swift 内存管理 [TOC] 前言 本文将介绍一下Swift中的内存管理,关于内存的一些基础知识可以参考我以前...

  • 关于项目管理的学前疑问

    为了能够尽可能为未来的职场发展提供更加充足的准备,在今天接受了同组同学的不期然的辅导后,反向问自己,究竟需要具备些...

  • Controller销毁NSTimer释放的细节

    关于NSTimer释放和内存泄漏的问题。 @(NSTimer)[内存管理,NSTimer释放,循环引用] 首先需要...

网友评论

      本文标题:关于内存管理的疑问

      本文链接:https://www.haomeiwen.com/subject/zzozlttx.html