java Char与char_JAVAc++中char和char[]的区别
JAVAc++中char和char[]的区别
(2011-05-17 09:25:45)
标签:
杂谈
地方。
但是留意p1、p2自身是在栈中的。
2. 2申请后系统的响应
栈:只要栈的剩余空间大于所申请空间, 系统将为顺序提供内存, 否则将报异常提示栈溢出。
堆:首先应该晓得操作系统有一个记录闲暇内存地址的链表, 当系统收到顺序的申请时, 会遍历该链表,
寻找第一个空间大于所申请空间的堆结点, 然后将该结点从闲暇结点链表中删除, 并将
该结点的空间分配给顺序, 另外, 对于大少数系统,
会在这块内存空间中的首地址处记录本次分配的大小?庋?代码中的delete语句才干正确的释放本内存空间。 另外,
由于找到的堆结点的大小不一定正
好等于申请的大小?低郴嶙远慕嘤嗟哪遣糠种匦路湃胂邢玖幢碇小?
2. 3申请大小的限制
栈:在
存储的闲暇内存地
址的, 自然是不延续的, 而链表的遍历方向是由低地址向高地址。 堆的大小受限于计算机系统中有效的
虚拟内存。 由此可见, 堆获得的空间比拟灵敏, 也比拟大。
2. 4申请效率的比拟:
栈:由系统自动分配, 速度较快。 但顺序员是无法控制的。
堆:是由new分配的内存, 普通速度比拟慢, 而且容易产生内存碎片, 不过用起来最方便。
另外, 在windows下, 最好的方式是用virtualalloc分配内存, 他不是在堆, 也不是在栈,
而是直接在进
程的地址空间中保存一块内存, 虽然用起来最不方便。 但是速度快, 也最灵敏。
2. 5堆和栈中的存储内容
栈:在函数调用时, 第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的
JAVA地址, 然后是函数的各个参数, 在大少数的c编译器中, 参数是由右往左入栈的, 然后是函数中的局部变
量。 留意静态变量是不入栈的。
当本次函数调用完毕后, 局部变量先出栈, 然后是参数, 最后栈顶指针指向最开始存的地址, 也就是主
函数中的下一条指令, 顺序由该点继续运转。
堆:普通是在堆的头部用一个字节寄存堆的大小。 堆中的详细内容由顺序员布置。
2. 6存取效率的比拟
但是, 在以后的存取中, 在栈上的数组比指针所指向的字符串(例如堆)快。
比如:
对应的汇编代码
第一种在读取时直接就把字符串中的元素读到寄存器cl中, 而第二种则要先把指针值读到edx中, 在根据
edx读取字符, 显然慢了。
堆和栈的区别可以用如下的比喻来看出:
运用栈就象我们去饭馆里吃饭, 尽管点菜(发出申请)、付钱、和吃(运用), 吃饱了就走,
不必理会切菜、洗菜等准备任务和洗碗、刷锅等扫尾任务,饱腹减肥饼干 他的好处是快捷, 但是自由度小。
运用堆就象是自己入手做喜欢吃的菜肴, 比拟麻烦, 但是比拟契合自己的口味, 而且自由度大。
自我总结:
charc1="abc";实际上先是在文字常量区分配了一块内寄存"abc", 然后在栈上分配一地址给c1并指向
这块地址, 然后改变常量"abc"自然会解体
但是charc2[]="abc", 实际上abc分配内存的地方和上者并不一样, 可以从
2293624看出, 完全是两块地方, 推断4199056处于常量区, 而2293624处于栈区
2293620这段输入看出三个指针分配的区域为栈区, 而且是从高地址到低地址
继续思考:
代码:
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。
java Char与char_JAVAc++中char和char[]的区别相关推荐
- mysql int char连接_MySQL中int、char以及varchar的性能比较
软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...
- java零碎要点---struts2中redirect和redirectAction的区别
struts2中redirect和redirectAction的区别 struts2中关于result的返回类型一般我们是转发到一个jsp页面或者是html页面等,但是struts2中的result的 ...
- java字节字符_java中字符和字节的区别
byte(字节): byte即字节的意思,是java中的基本数据类型,用来申明字节型的变量,一个字节包含8个位,所以,byte类型的取值范围是-128到127. 通常在读取非文本文件时(如图片,声音, ...
- java中输入char类型_java中如何输入char类型
java中基本数据类型的输入包括整形的输入:in.nextInt();单精度浮点型:in.nextFloat();双精度浮点型:in.nextDouble();字符串类型:in.next();in.n ...
- mysql的to char data_数据库中的to char
Oralce中设置小数点位数 假如数据库中有一个字段为zdt8,是数值类型的,即使是数字0,也想显示成0.00,则使用to_char函数转换一下 to_char(NVL(zdt8,0.00),'fm9 ...
- java error与exception_Java中Error与Exception的区别
Error类和Exception类都继承自Throwable类. Error的继承关系: Exception的继承关系: 二者的不同之处: Exception: 1.可以是可被控制(checked) ...
- java 静态内部类 内部类_Java中内部类和静态内部类的区别
内部类和静态内部类 示例 public class OuterClass { private int numPrivate = 1; public int numPublic = 2; public ...
- java long 和long_java中Long和long的区别
之前做项目的时候多少接触了这个问题.只是一直没用到这个类型,写的项目都是一些很小的,数据量很少.今天给项目大框架的时候发现,数据库(Oracle)里面Number类型的长度为10以下的时候,如果使用m ...
- java thread和runnable_java中thread和runnable的区别
展开全部 线程的起动62616964757a686964616fe4b893e5b19e31333361326332并不是简单的调用了你的RUN方法,而是由一个线程调度器来分别调用你的所有线程的RUN ...
最新文章
- 服务器测速,php在线测速
- React-Amap-HOC组件封装
- 深度挖掘 Laravel 生命周期
- ruby的optparse使用小记
- python大数据招聘信息_2017招聘大数据丨Python需求增速达174%,AI人才缺口超百万!...
- python简单程序实例-python实现的简单窗口倒计时界面实例
- filter-policy应用实验(华为设备)
- 升级Xcode8后需要添加的一些权限
- atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表
- 同一网络下的两台计算机怎样共享,同一路由器上的两台计算机如何共享文件?...
- cf虚拟服务器设置方法,CF和GA免费顶级域名申请注册及修改DNS域名解析方法
- 微信小程序上传Excel文本文件功能
- IntelliJ IDEA 项目相关的几个重要概念介绍
- SpringCache整合EhCache2和EhCache3(JCache)
- A Knight‘s Journey(POJ-2488)
- Android 多厂商推送集成
- 人工智能时代,人类何去何从?
- 【运动控制】运动控制卡与PLC的区别
- argument详解
- 阿里云对象存储-图片存储
热门文章
- 第一章、计算机网络与英特网(重点知识梳理)
- windows快捷键+组合键+搜索命令
- IP-guard内网安全解决方案
- js插件动态加载js、css解决方案
- 物联网网关关键技术包括两个方面,物联网网关是智能家居发展的重要支撑
- vue 点击获取当前时间上/下周 整周数据
- 怎么禁止电脑端的爱番番弹窗出现?
- Javaweb-请求报500问题
- 【论文笔记】YOLOv4: Optimal Speed and Accuracy of Object Detection
- 【偶像大师 白金星光】的【Variable Tone】技术大公开!偶像从哪里看都那么可爱,VA小组谈制作方针...