美文网首页
堆栈和数据储存

堆栈和数据储存

作者: 骑码走天涯 | 来源:发表于2018-06-29 10:14 被阅读0次

一、栈堆的原理

栈区(stack)由操作系统自动分配释放 ,存放函数的参数值,局部变量的某值等等。其操作方式类似于数据结构中的栈。

堆区(heap)一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表

栈的特点:栈是一种数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。

栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一堆称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。 栈也称为后进先出表(LIFO表)

二、数据储存

(1)简单(基本)数据类型:Number、String、Boolean、Undefined、Null,简单数据类型:在栈内直接存储值。结果还是10086因为把c的值给b时是简单的复制了一份,c和b可以单独操作不相互影响。

function a(b){

    b = 10010;

}

var c = 10086;

a(c);

console.log(c);

(2)复杂(引用)数据类型: Object、Array、Date、function等,复杂数据类型:在栈内存储引用。因为复杂数据类型赋值是把栈中对象的地址赋给变量,函数内外两个变量指向同一个对象,所以只要对象的属性值改变,两个变量值都会改变

function Person(name){

    this.name=name;

}

var s1 = new Person(18);

function index(s){

    s.name = "在这里";

}

index(s1);

console.log(s1.name);

function Person(name){

    this.name = name;

    this.logName = function() {

        console.log(this.name);

    }

}

var p1 = new Person('张三');

var p2 = new Person('李四');

p1.logName();

p2.logName();

三、可以通过以下的链接去运行代码

http://latentflip.com/loupe/?code=JC5vbignYnV0dG9uJywgJ2NsaWNrJywgZnVuY3Rpb24gb25DbGljaygpIHsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gdGltZXIoKSB7CiAgICAgICAgY29uc29sZS5sb2coJ3dvIScpOyAgICAKICAgIH0sIDIwMDApOwp9KTsKCmNvbnNvbGUubG9nKCJIaSEiKTsKCnNldFRpbWVvdXQoZnVuY3Rpb24gdGltZW91dCgpIHsKICAgIGNvbnNvbGUubG9nKCJDbGljayB0aGUgYnV0dG9uISIpOwp9LCA1MDAwKTsKCmNvbnNvbGUubG9nKCJXZWxjb21lIHRvIGxvdXBlLiIpOw%3D%3D!!!PGJ1dHRvbj5DbGljayBtZSE8L2J1dHRvbj4%3D

相关文章

  • 堆栈和数据储存

    一、栈堆的原理 栈区(stack)由操作系统自动分配释放 ,存放函数的参数值,局部变量的某值等等。其操作方式类似于...

  • 数据结构与算法 (栈实现篇)

    数据结构与算法 (栈实现篇) 在数据结构与算法中,栈(stack)又名堆栈,栈是一种受限的线性储存结构,只允许在一...

  • Go 堆栈的理解

    在讲Go的堆栈之前,先温习一下堆栈基础知识。 什么是堆栈?在计算机中堆栈的概念分为:数据结构的堆栈和内存分配中堆栈...

  • 简单数据类型和复杂数据类型

    1 - 简单数据类型和复杂数据类型 1.1 简单数据类型 1.2 复杂数据类型 1.3 堆栈 堆栈空间分配区别: ...

  • 在Python中实现两个堆栈的队列

    在Python中实现两个堆栈的队列。数据结构了解堆栈和队列。然后用两个堆栈实现一个队列。堆栈和队列都是列表。但它们...

  • Core Data(Creating and Saving Ma

    在定义了托管对象模型并初始化应用程序的Core Data的堆栈(stack)之后,你就可以开始为数据储存创建对象。...

  • 复制数组或对象

    直接 = 赋值不OK....对象和数组都是复杂类型数据,所以储存时存的不是值,是什么堆栈什么玩意儿的那个地址。。直...

  • iOS 之 FMDB、CoreData、Plist、NSUse

    简述 数据储存可以分为数据结构和储存方式。数据结构就是数据存在的的形式。例如 NSDictionnary、NSAr...

  • 内存中的堆栈和数据结构堆栈区别

    内存中的堆栈和数据结构堆栈不是一个概念,可以说内存中的堆栈是真实存在的物理区,数据结构中的堆栈是抽象的数据存储结构...

  • Java内存中的数据存储结构

    内存中的堆栈和数据结构堆栈不是一个概念,可以说内存中的堆栈是真实存在的物理区,数据结构中的堆栈是抽象的数据存储结构...

网友评论

      本文标题:堆栈和数据储存

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