黑马程序员------堆栈
来源:互联网 发布:cisco 端口聚合 编辑:程序博客网 时间:2024/05/29 14:02
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
程序运行时,它的数据必须存储在内存中,一个数据项需要多大的内存,存储在什么地方,以及如何存储都依赖于该数据项的类型。
运行中的程序使用两个内存区域来存储数据:堆和栈栈是一个内存数组,是一个LIFO(last-in first-out)后进,先出的数据结构,栈存储几种类型的数据;
某些类型变量的值
程序当前的执行环境
传递给方法的参数。
栈的特征
数据只能从栈的顶端插入和删除
把数据放入栈的顶端称为入栈(push)
从栈顶删除数据称为出栈(pop)
堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据。与栈不同,堆里的内存可以任意顺序存入和移除。
虽然程序可以在堆中存储数据,但并不能显示的删除它们,clr的自动GC(garbage collector,垃圾回收器)在判断出程序的代码将不会再访问某数据项是,自动清理无主的对象。
数据项的类型定义了存储数据需要的内存大小、组成该类型的数据成员、该类型能够执行的函数、对象在内存中存储的位置--堆和栈
值类型值需要一段单独的内存,用于存储实际的数据
引用类型需要两端内存:
第一段存储实际的数据,它总是位于堆中
第二段是一个引用,只想数据在堆中的位置。
数据如果不是其他类型的成员,
对于值类型,数据存储在栈中,对于引用类型,实际数据存储在堆中,引用存储在栈中
数据如果是其他类型的成员
引用类型的数据部分始终存放在堆中
值类型对象,或引用类型数据的引用部分可以存放在堆中,也可以存放在栈中,这依赖于实际环境
变量声明
变量在使用之前必须声明。变量声明定义了变量,并完成了2件事
给变量命名,并给他关联一种类型
让编译器为他分配一块类型
一个简单的变量声明至少需要一个类型和名称
除声明变量的类型和名称外,声明还可以把他的内存初始化为一个明确的值
无初始化语句的本地变量有一个未定义的值,在未赋值之前不能使用
一些类型的变量如果声明时没有初始化语句,那么会自动设为默认值,而另一些则不能。
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
- 黑马程序员------堆栈
- 黑马程序员_java中的堆栈
- 黑马程序员_java基础堆栈
- 黑马程序员-内存堆栈分析
- 黑马程序员_队列_堆栈
- 黑马程序员--java堆栈常量池
- 黑马程序员-头痛的JVM堆栈理解!!
- 黑马程序员——Java堆栈区别
- 黑马程序员—C#堆和堆栈的讲解
- 黑马程序员 List集合模拟堆栈和队列
- 黑马程序员--c#堆和堆栈的区别(简介)
- 《黑马程序员》 LinkedList之堆栈和队列功能的模拟
- 黑马程序员_堆栈和队列两种数据结构
- 黑马程序员使用LinkedList模拟一个堆栈或者队列数据结构。
- 黑马程序员_日记38_LinkedList建立堆栈练习
- 黑马程序员----用LinkedList模仿堆栈和队列原理
- 黑马程序员_学习日记6_C#基础归纳总结之堆栈分配图解
- 黑马程序员——用LinkedList实现队列和堆栈数据结构
- C#代码审查清单
- 黑马程序员-Java API-day15
- ubuntu文件系统和启动流程
- Nginx 源码学习(一) nginx的跟踪与调试
- 内存的动态分配
- 黑马程序员------堆栈
- C# WPF 关闭程序 释放资源
- DG删除备库上的archive log
- HD 1392 Surround the Trees 解题报告
- Winsock编程
- 类型转换与字符串赋值、分割、合并、复制、比较、查询、翻转详解 (完整代码)
- Pandora三季度财报业绩不佳迫使其解除收听时长限制
- POJ 1840 Eqs
- 黑马程序员------C#类