votatile的作用:多线程编程中,这个变量是会经常被改变的。寄存器,从内存中去读取。
寄存器与内存:
大钱世界呀,只有谁比谁更水。
数组名并不是真正意义上的指针。
野指针:初始化指向NULL,
指针大小是固定的吗?
内存地址的长度是固定的。
同时我们不难看出,一个指针的值就是一个32位的二进制数,32位对应4字节(Byte)。 所以,指针的大小实际上是由CPU的寻址位数决定。指针类型的大小是固定的(无论该指针指向哪种数据类型),在32位系统中为4字节;在64位系统中为8字节。
什么时候必须重写拷贝构造函数?默认拷贝为浅拷贝
想用另一个对象进行拷贝的初始化。
定义非空的析构?那要delete?定义拷贝。
类里面有*指针如char
浅拷贝。两个对象指向了堆中同一空间。
什么是拷贝构造函数:const定义,无explicit,对象以值传递方式传入,以另一对象初始化,对象以值传递的方式从函数返回
explicit?是防止隐式类型转换
右值引用可以减少拷贝,提高程序执行效率。
继承重用代码,
菱形继承,——A被BC继承,BC又同时被D继承,多次构造,多次析构?iostream——istream和ostream——ios
多态:基类指针引用——运行是动态绑定对象函数
C++编译环境:C++标准库,C语言兼容库,C++标准语法,C++扩展语法编译模块。
externalC, 函数重载是否支持。
四类强制类型转换:
static_cast 基本类型之间,dynamic继承关系类指针,reinterpret才是用指针之间的,const
malloc和new?
库函数和运算符。不在编译器控制权限内。
静态成员:类共享静态成员函数,可以对象名和类名访问,静成员函数只可以静态成员变量
ifndef/define 防止头文件重复包含。编译器支持program once
左值/右值:左值可取地址,右值传递,如const的初始化,减少拷贝,提升效率,且智能指针不必手动释放。重载和赋值函数,移动。
不拷贝数组也不手动释放内存。
虚拟内存:
让物理内存扩充更大逻辑内存。让一个进程或资源的页面加载进内存。
分时系统分时间片,和实时能在规定时间内处理完毕。
运行态——就绪:时间片用完。可以不经过堵塞。
浏览器进程里有线程http请求、事件响应、渲染线程
孤儿进程的父进程退出,僵尸进程进程描述符仍在文件中。
内联会检查参数类型,define不会,预处理器和编译器。
死锁:互斥、占有和等待、不可抢占、环路等待。鸵鸟策略忽略、资源统一编号
进程同步:临界区、互斥量(拥有互斥变量才可访问公共资源)、信号量、
磁盘调度算法:最短寻道时间优先,会产生jie,scan扫描
虚拟内存可以利用内存起到缓存的作用,提高进程访问磁盘的速度。应用认为它拥有连续可用的内存地址空间,实际分为多个物理内存碎片。结合磁盘和内存,为进程提供看起来速度快的存储。
寄存器CPU内部元件,cache位于cpu与主存之间小但速度高,存cpu刚用过的,弥补cpu与内存间运算速度差异。硬盘长期存,内存断电就丢失,记忆。
内存存临时的数据,是数据执行者,根据指令工作。