赞
踩
GC当系统内存资源匮乏的时候,然后自动的去释放那些没有使用的托管资源
托管就是GC帮你管理内存以及资源的释放,不需要程序员自己去控制,对象只针对于托管资源,不回收非托管资源
比如数组,用户定义的类,接口,委托,object,字符串等引用类型,栈上保存一个地址,当栈释放之后,对象也就没有用了
但是int string float 等的值类型,GC会自动释放其内存,不需要GC来回收
对于非托管资源,GC只能跟踪非托管资源的生存期,而不知道如何释放它
这样就出现了资源使用不尽的时候,不能提供资源能够提供的服务,windows的运行速度会变慢
比如你连接了数据库,用完之后你没有显式释放数据库资源,如果还是不断地申请一个数据库资源
到时候程序会抛出一个异常
数组的特点
存放在内存中一块连续的区域
数组需要预留空间,可能出现数据溢出和内存浪费的情况
插入数据和删除数据的效率低,插入一个数据,后边的数据都要向后移动
随机读取的效率很高,因为地址连续
并不利于扩展,数组定义的空间不够的时候,需要重新定义数组
链表的特点
存放的内存不需要连续
每一个数据都同时保存了下一个数据的地址
插入和删除数据的效率高
查询数据的效率低,不具有随机访问性
不指定大小,扩展方便,数据随意增加
各自优缺点
数组:随机访问性强,查找速度快
链表:插入删除速度快,内存利用率高,不易造成浪费,大小没有固定扩展灵活
缺点:
数组:插入删除效率低,可能造成数据溢出和内存浪费,内存空间要求高,需要连续的空间,大小固定不能扩展
链表:不能随机查找,必须从第一个数据开始遍历,效率低
由数组和链表可以引申到顺序存储和链式存储上去
顺序存储的存储密度是100%,没有空间的浪费,链式存储中处理存放数据还有指针,所以没有达到100%
顺序存储需要多少空间是需要实现决定的,而链式存储是动态分配的更加灵活
时间性能上,对于查找,读取顺序存储更好
对于删除插入等操作 链式存储更好 和数组和链表是相同的道理
1.红黑树的节点是红色和黑色
2.红黑树的根节点是黑色
3.红黑树的叶子节点是黑色的空节点
4.红黑树中红色节点的两个子节点都是黑色的,路径上不能出现两个连续的红色节点
5.人一个节点到叶子节点的所有路径上包含相同数量的黑节点
inline在编译的时候,编译器将内联代码复制到调用内联的地方
优点:在代码简短的情况下,如果频繁调用普通函数,会因为压栈而造成时间和空间的消耗 内联可以优化这个问题
缺点:代码长而且复杂的情况下,使用内联会复制到调用的地方,编译之后产生机器码造成冗余
装箱
在堆上为新的对象实例分配内存。该对象实例包含数据,但没有名称;
在栈上值类型变量的值复制到堆上的对象中
将堆上创建的对象的地址返回给引用类型变量如代码:
拆箱就是将引用类型转换成为值类型的过程
拆箱并不是将装箱过程颠倒过来,拆箱的代价比装箱的代价低好多
获取已装箱的对象的地址
将值从堆上的对象中复制到堆栈上的值变量中
拆装箱的操作会对应用程序的速度和内存消耗产生不利的影响(消耗内存,增加垃圾回收次数,复制操作等)
所以我们要避免编译器在什么时候自动拆装箱
作用于函数内部的局部变量的时候,当函数再次调用的时候,其变量还会保持上一次的值
函数内部的静态变量只开辟一次空间不会因为多次调用产生副本,也不会因为函数返回而失效
当static作用于类内成员时,由该类所有对象共同维护和使用,从而实现同一个类的不同对象数据共享。
访问静态数据成员方式:类名::标识符
对静态数据成员初始化:在类定义外进行
其他方法可以直接调用静态函数成员
const_cast 用于去除const属性
static_cast用于基本类型转换
dynamic_cast用于多态类之间的转换
reinterpret_cast 用于不同指针类型的转换
希望我所写的对大家有所帮助吧
通俗:const离谁近 谁就不能更改,防止无意的代码的修改,可减少bug的出现
提供了更灵活,更安全的方式定义常量
占用存储单元,地址,可以用指针指向const关键字修饰的变量,但是不能修改
清除了#define的不安全性 有更良好的编译时检测性
作用:
提供了更灵活,更安全的方式定义常量
占用存储单元,地址,可以用指针指向const关键字修饰的变量,但是不能修改
清除了#define的不安全性 有更良好的编译时检测性
指向常量的指针:不允许改变指针所指地址中的数据 可以改变指针所指地址
const int *j = &i; //指针,指向int型常量
常指针:不允许改变指针所指地址,可以改变指针所指地址中的数据
int *const j = &i; //常指针, 指向int型变量
指向常量的常指针:以上两种的结合 不能改变指针所指的地址,不能改变指针所指地址中的数据
const int *const j = &i; //指向int常量的常指针
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。