java和c++之堆栈的故事

故事简介

c++是个向往自由的boy,他对堆栈的态度是:自由灵活。java认为生而为编程语言,就应该受到一定的约束才能更快活。于是他们与堆栈便开始了扯不开的羁绊。
好了好了,引子介绍完了,开始正文。

创建对象

c++它创建对象可以在堆上创建也可以在栈上创建,java则所有的对象都在堆上创建。

c++的对象的创建

c++创建对象有两种方式,一种是动态在堆上创建:
object *o = new object();
其中o就是指向对象的指针,其实这在逻辑上和java创建对象基本相同。
另一种是在栈上创建:
object oj;
这种方式不一定会在栈上创建,因为涉及到上下文的问题,在类内部且类是动态创建的,则此对象便在堆上创建,除此之外基本都在栈上创建。
在堆和栈上创建的区别在于生命周期和性能,生命周期相对是主要影响因素。在堆上的生命周期有程序员自己决定,也正是由于这个原因,也容易到处一些人为错误,从而导致内存泄漏等。在栈上一旦离开作用范围就自动析构了,生命周期更短暂。

java的对象的创建

java有他的规范,就是所有的对象都在堆上创建,也就是我们常见的创建对象的方式。
Duck d= new Duck( );
相对于c++来说它更简单,规范更是一种约束,约束带来的便是范式。
java中的栈之存基础数据类型、对象引用、方法。
当然由于在java有垃圾回收机制,所以不用考虑对象内存回收的问题,这也是Java程序编写强大的福音啊!

你可能感兴趣的:(java,堆栈,内存泄漏,c++)