- 程序与进程的区别
程序:未加载进内存的文件,如硬盘的数据,代码
进程:已加载进内存,具有生命周期 - 内存结构图
名称 | 特点 | 存放内容 | 其他 |
---|---|---|---|
栈 | 自动释放 | 局部变量,函数参数 | |
堆 | 手动释放 | 动态内存分配 | malloc与free必须成对出现 |
BBS | 未初始化数据区 | 未初始化的全局变量,未初始化的静态全局变量 | 如果没有赋值,默认为0 |
数据区 | 已初始化数据区 | 已初始化的全局变量,已初始化的静态全局变量,局部静态变量,常量数据 | 如果局部静态变量初始化为0,与未初始化默认为0相同,存储在BBS段 |
代码段 | 只读 | 可执行代码,字符串常量 | 不可修改 |
3. 堆与栈的比较
堆大栈小
堆分配空间慢,栈分配空间快
4. 数组名代表数组首地址,数组名不占空间
5. 指针与数组
一级指针只能对应一级数组,数组加&变为二维数组
6. char*
与int*
的区别
int*
: 不能直接赋值
不能一次性输出
char*
: 可以直接赋值
可以一次性输出
第一个字符的地址代表这串字符首地址
7. sizeof
和strlen
的区别
sizeof
:所占空间大小
strlen
:字符的个数
8. 大小端
小端:低位数据对应低地址,高位数据对应高地址,低地址先存储,其余为0
大端:低位数据对应高地址,高位数据对应低地址,高地址先存储,其余为0