`
lee_3do
  • 浏览: 25751 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java,C,以及数据数据结构中的堆和栈

阅读更多

Java:
http://hi.baidu.com/reset_87/blog/item/726afb08397acf2c6b60fbfc.html 写道
基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收。 引用数据类型,需要用new来创建,既在栈空间分配一个地址空间,又在堆空间分配对象的类变量 。 方法的引用参数,在栈空间分配一个地址空间,并指向堆空间的对象区,当方法调用完成后从栈空间回收。局部变量 new 出来时,在栈空间和堆空间中分配空间,当局部变量生命周期结束后,栈空间立刻被回收,堆空间区域等待GC回收。 方法调用时传入的 literal 参数,先在栈空间分配,在方法调用完成后从栈空间分配。字符串常量在 DATA 区域分配 ,this 在堆空间分配 。数组既在栈空间分配数组名称, 又在堆空间分配数组实际的大小!
哦 对了,补充一下static在DATA区域分配。

从Java的这种分配机制来看,堆栈又可以这样理解:堆栈(Stack)是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)为这个线程建立的存储区域,该区域具有先进后出的特性。
每一个Java应用都唯一对应一个JVM实例,每一个实例唯一对应一个堆。应用程序在运行中所创建的所有类实例或数组都放在这个堆中,并由应用所有的线程共享.跟C/C++不同,Java中分配堆内存是自动初始化的。Java中所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在堆栈中分配,也就是说在建立一个对象时从两个地方都分配内存,在堆中分配的内存实际建立这个对象,而在堆栈中分配的内存只是一个指向这个堆对象的指针(引用)而已。

 C,C++:

    栈是机器系统提供的,由编译器自动分配和释放,储存基本类型和函数参数的值。(和java很像么)。堆则是由函数库提供的,由程序员自己分配和释放。

数据结构:

  栈后进先出,堆只是个完全二叉树而已。

 

分享到:
评论

相关推荐

    免费:数据结构(c与c++与java三本书高清晰版).rar

    C语言版的《数据结构》可能是基于Daniel Liang的著作,该书通常会涵盖线性结构(如数组和链表)、树结构(如二叉树和堆)、图结构以及排序和搜索算法等内容。C语言因其底层控制能力和效率,常用于实现数据结构的底层...

    C、C++、JAVA数据结构与算法电子书

    - **栈**:后进先出(LIFO)的数据结构,C、C++和Java都有内置的栈支持,如C++的std::stack,Java的java.util.Stack。 - **队列**:先进先出(FIFO)的数据结构,C++的std::queue,Java的java.util.Queue提供实现...

    数据结构算法 java和c语言两种实现

    在Java和C语言中实现这些数据结构和算法,需要注意语言特性,如Java中的对象和引用,C语言中的指针操作。同时,要关注性能优化,如避免不必要的内存分配和拷贝,以及合理利用数据结构特性来减少操作复杂性。 例如,...

    堆和栈详解

    堆和栈是计算机内存管理中的两个重要概念,它们在程序执行过程中起着至关重要的作用。在深入探讨这两个概念之前,我们需要明确一点:堆和栈在内存结构上有着本质的区别。 栈(Stack)是一种线性数据结构,其特点是...

    Java数据结构和算法(第二版),算法经典案例(C语言)

    《Java数据结构和算法(第二版)》与《算法经典案例(C语言)》这两本书是IT领域的宝贵资源,尤其对于初学者和希望在面试中脱颖而出的开发者来说,它们提供了深入理解数据结构和算法的基础。数据结构是编程的核心,它...

    数据结构(C语言版)\Java数据结构和算

    第2章 数组和结构 2.1 数组 2.2 数组的动态存储分配 2.3 结构体和联合体 2.4 多项式 2.5 稀松矩阵 2.6 多维数组的表示 2.7 字符串 2.8 参考文献和选读材料 2.9 补充习题 第3章 栈与队列 3.1 栈 .3.2 ...

    JAVA编程语言和数据结构第十一版 进阶版 编程答案

    在深入探讨Java编程语言与数据结构的第十一版(进阶版)的编程答案之前,首先需要理解这两个核心概念:Java编程语言和数据结构。Java是一种面向对象的、跨平台的编程语言,由Sun Microsystems(现已被Oracle收购)在...

    Java语言的数据结构与算法书

    在Java这个广泛使用的编程语言中,掌握数据结构和算法对于提高程序效率、优化解决方案至关重要。本书特别适合那些对C或C++感到困惑,希望在Java环境中学习这些概念的读者。 数据结构是计算机存储、组织数据的方式,...

    Java数据结构经典算法大全

    在编程领域,尤其是Java开发中,数据结构与算法是核心基础,它们决定了程序的效率和性能。"Java数据结构经典算法大全"这个资源显然是一份全面深入学习Java中数据结构和算法的宝贵资料。下面我们将详细探讨其中可能...

    内存中堆和栈的区别

    内存中堆和栈的区别 内存中堆和栈是两个不同的概念,都是用来存放数据的内存区域,但它们有所区别。 内存分配方面 堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由 OS 回收。堆的分配方式类似于链表...

    Java数据结构和算法中文第二版

    Java数据结构和算法介绍了计算机编程中使用的数据结构和算法,对于在计算机应用中如何操作和管理数据以取得最优性能提供了深入浅出的讲解。全书共分为15章,分别讲述了基本概念、数组、简单排序、堆和队列、链表、...

    Java数据结构和算法

    ### Java数据结构和算法知识点详解 #### 一、数组与简单排序 ##### 数组 **概念**: 数组是一种数据结构,用于存储具有相同类型的多个数据元素。数组中的每个元素可以通过索引(通常从0开始)访问。 **特点**: - *...

    面试 java c c++ 数据结构 程序员

    此外,Queue和Stack也是重要的数据结构,LinkedList可以实现这两者,而ArrayDeque则提供了更高效的队列和栈操作。 接下来,转向C和C++。在C++中,STL(Standard Template Library)是数据结构的核心,它包括了...

    Java数据结构和算法中文第二版(1)

    它使用JAVA语言说明重要的概念,而避免了C/C++语言的复杂性,以便集中精力论述数据结构和算法。 经验丰富的作者Robert Lafore先生提供了许多简单明了的例子,避免了对于这类命题常见的冗长、繁琐的数学证明。在第二...

    java版数据结构java版数据结构

    在Java中,数据结构的实现往往基于对象和类的概念,这与C语言等其他语言有所不同。Java提供了丰富的内置数据结构,如数组、列表(ArrayList、LinkedList)、集合(Set、HashSet、TreeSet)、映射(Map、HashMap、...

    C语言版数据结构实训代码

    数据结构是计算机科学中至关重要的一个领域,它研究如何有效地组织和存储数据,以便于高效地访问和操作。在这个“C语言版数据结构实训代码”中,我们可以期待探索一系列使用C语言实现的数据结构实例。C语言因其高效...

    数据结构与算法分析(java版)和经典算法大全

    "数据结构与算法分析(Java版)"这本书通常会深入探讨这些主题,提供关于如何在Java环境中实现各种数据结构和算法的详细解释。 数据结构主要包括数组、链表、栈、队列、树(如二叉树、平衡树AVL和红黑树)、图、...

    常见数据结构(java+c代码)

    本资源"常见数据结构(java+c代码)"提供了使用Java和C语言实现的数据结构示例,这对于学习和理解这些概念至关重要。 在Java和C这两种语言中,数据结构通常包括以下几种: 1. **数组**:是最基础的数据结构,允许...

    C语言数据结构全集资料

    在这个资料集中,你将有机会学习到如何在C语言中实现这些基本数据结构,以及如何在实际编程中应用它们。同时,由于C#、C++和Java的加入,你还可以了解到不同语言在处理数据结构时的异同,这对于跨语言开发或者理解...

Global site tag (gtag.js) - Google Analytics