关于内存管理的疑问

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

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释放内存。 而栈区内分配的内存由系统自动释放。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,729评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,652评论 18 399
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,537评论 11 349
  • 前言: web页面和app的直接的交互是很常见的东西,在ios8之前,用的是uiwebview,但是在ios8之后...
    qingchen91阅读 8,100评论 6 25
  • 加载图片 //点击加载图片按钮 //设置数据源,图片显示的来源是什么,可以是相机、照片薄、或者图片库 //设置的代...
    阿拉斯加的狗阅读 8,782评论 5 9

友情链接更多精彩内容