C语言
文章平均质量分 82
熹微seesea
这个作者很懒,什么都没留下…
展开
-
static、extern、volatile、register、const
定义全局静态变量、定义局部静态变量、定义静态函数全局静态变量:1、内存分配在数据区,生存期为程序运行期间2、如果没有进行初始化,默认为03、作用域局限于一个源文件内,无法被源程序的其他源文件使用和全局变量比较区别在第三点,全局变量的文件作用域可以通过关键字在源程序的其他源文件进行声明,而被其他源文件使用局部静态变量:1、内存分配在数据区,生存期为程序运行期间2、同上3、作为局部变量作用域局限于函数块内,和局部变量比较区别在1、2点1、内存分配在栈区,生存期为函数执行期间。原创 2023-08-05 19:09:18 · 109 阅读 · 0 评论 -
字节对齐和字节序
1、什么是字节对齐内存空间是按字节划分,理论上可以从任意起始地址访问任意类型的变量。但实际上在访问特定类型变量是经常在特定的内存地址访问,这就需要各种数据类型按照一定的规则进行排列,而不是一个接一个紧接着排放。例如32位的计算机处理器通过总线访问内存数据。每个总线周期从偶地址开始访问32位数据,如果一个32位的数据没有存放在4字节整除的内存地址处,那么处理器就需要两个总线周期对其进行访问,显然会降低访问效率。因此,通过合理的内存对齐可以提高访问效率。原创 2023-01-07 21:13:14 · 574 阅读 · 0 评论 -
指针相关内容(C语言)
在内存中,每一个自己单元,都要一个编号,称为地址。在虚拟内存中,也同样如此。专门用来存放地址的变量称为指针变量,简称指针。不管是什么类型的指针变量,在32位机上,占4个字节;在64位机上,占8个字节。原创 2023-01-06 20:18:19 · 250 阅读 · 1 评论 -
野指针和常见的内存错误
指向不可用或者不应该被使用的内存的指针(注意,不是NULL指针)原创 2023-01-03 15:56:06 · 352 阅读 · 0 评论 -
C 内存管理(代码区、数据区、堆区、栈区)
text段:存放二进制代码;.rodata段:存放常量。代码区的大小在程序运行前就已经确定,该内存区域一般是只读的.data段: 存放已初始化的全局变量和静态变量;.bss段:存放未初始化的全局变量和静态变量;这一块的内存在程序编译时就已经分配好,在程序整个运行期间都存在。属于静态内存分配用于存放在程序运行时被动态分配的内存段。堆的大小不固定,可以动态增加和减少。使用malloc()等函数动态分配内存到堆上,使用free()等函数释放对应的动态分配内存。堆的最大容量受限于系统中有效的虚拟内存。原创 2023-01-02 18:20:19 · 4243 阅读 · 1 评论