-
-
[原创]深入理解C语言六-知识点记录
-
发表于:
2021-7-25 18:36
5769
-
1、没有解释方式的指针,只是一个地址
2、没有解释方式,不支持*运算,不支持下标运算,不支持加减运算
3、pv赋值需要一个地址类型,任意类型的指针都可以
4、pv不能赋值给有类型的指针
malloc申请的堆内存实际上是一个结构体,成员依次包括:
1、上一个堆地址
2、下一个堆地址
3、所在文件地址
4、所在行
5、堆类型
6、堆长度
7、堆编号
8、上溢标志
9、堆内容
10、下溢标志
指针p实际指向的地址是堆内容的地址。
1、引用或操作资源的变量必须初始化为无效值
2、申请资源后必须检查
3、如果结果错误按需求处理错误
4、使用资源
5、释放资源前必须检查引用资源的变量是否有效
6、释放完成后,必须将引用资源的变量重置为无效值,防止野指针
内存属性可分为Read可读、write可写、execute可执行、share共享,程序的全局变量、常量是按同内存属性分配内存空间的。C程序运行时分配的内存空间从低地址到高地址依次为:
1、Code,代码段,re,可读可执行。
2、Data,数据段,包含全局变量,常量、静态常量。
(1)uninit,未初始化部分,wr,可读可写。
(2)inited,初始化部分,wr和r,可读可写。
3、Heap,堆,wr,可读可写。
4、Stack,栈,wr,可读可写。
C程序运行时最开始做的事情是初始化浮点协处理器、初始化全局变量。
作用域实际上是编译器按照C标准所规定的语法做出的访问限制。
1、块作用域:函数内部的中括号中
2、函数作用域:函数的开始到函数的结束
3、文件作用域:变量所处的文件内
4、进程作用域:所处模块的装载到所处模块的卸载
全局变量和局部变量的区别:
1、作用域不一样
2、生命周期不一样
3、存放区域不一样(内存)
1、进程作用域
2、生命周期从所处模块装载到所处模块卸载
3、存放在内存的数据段
1、函数作用域
2、生命周期从从函数的开始到函数的结束
3、存放在内存的栈中
1、文件作用域
2、生命周期从所处模块装载到所处模块卸载
3、存放在内存的数据段
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2021-7-26 19:36
被流照君编辑
,原因: