demi 在 提交
DRAM和SRAM的区别
两者都是随机存取器的一种,上电数据保持,掉电数据消失,不同的是,DRAM需要周期性的更新,SRAM不需要。
CPU数据总线、地址总线、位数与内存大小的关系
cpu的位数是指数据总线的位数,一般来说cpu的数据总线与地址总线相同,cpu的寻址范围为2exp(地址总线数),如32位cpu代表有32根数据总线,32根地址总线,则寻址范围为2exp32=4G,故32位cpu对应内存最大为4G,64位cpu为16G。
位和字节
内存单元的大小单位:位(1bit),字节(8bit)。特别注意,字、半字、双字这些单位具体有多少位是依赖于平台的定义,没有通用的定义。
内存编址
内存单元包含地址和空间,一个内存地址对应的空间是固定的,为一个字节(8bit),这也是字节的起源。
内存对齐
分配硬件上连续的内存为对齐访问,否则为非对齐访问,对齐访问效率更高。
C语言中数据类型、函数名的本质
数据类型代表占内存单元的数量和解析方式,函数名代表一段代码的内存首地址。
C语言中数据类型的强制转换
本质上是改变该变量的内存单元数量以及解析方式,内存单元中保存的bit信息不变。
C语言指针变量和普通变量
两者区别只在于普通变量保存数值,指针变量保存地址,如:
int *a; //假如编译器分配变量a的内存地址0x00000000
表示0x00000000开始的4字节中存储了1个地址,该地址往后的4个字节中存储着int类型的整数,第一个4字节表示内存地址的大小,第二个4字节表示int类型的大小。
C语言结构体内嵌指针实现面向对象
struct node
{
int var; //普通变量
void (*pFunc)(void); //函数指针
}
C语言堆内存与栈内存
栈内存:自动申请、自动释放;内存空间反复使用,需要初始化;栈内存有上限,容易溢出,适用于局部变量;
堆内存:手动申请、手动释放;不释放使用完毕的内存会造成内存泄露,程序崩溃;内存空间大,适用于存储大量数据。
来源:博客园 - 樱花小猪