
c语言基础
文章平均质量分 72
涉及c语言相关基础知识
sy4331
这个作者很懒,什么都没留下…
展开
-
程序加载与运行过程
程序的加载与运行过程原创 2022-09-09 20:17:56 · 2113 阅读 · 0 评论 -
linux系统下常见数据类型字节数
数据类型占用字节数原创 2022-07-29 16:14:06 · 1557 阅读 · 0 评论 -
linux堆内存管理
堆内存的使用在linux开发过程中非常普遍,我们有必要了解相关的内存管理方便我们对内存问题的理解和定位。堆内存结构层次linux的堆内存管理分为三个层次,分别为分配区area、堆heap和内存块chunk。area:堆内存最上层即为分配区area。分配区area分为主分配区(main area)和线程分配区(thread area)。主进程堆空间对应的分配区即为主分配区main area,每个进程仅有一个主分配区,对应我们通常所说的bss段上面堆空间位置。线程堆空间对应的分配区即为线程分配区原创 2021-11-16 15:23:25 · 2860 阅读 · 0 评论 -
linux程序运行时相关库路径及查找
linux程序在编译、链接、运行时涉及多个路径,我们经常分不清楚。下面对几个相关路径进行说明。PATH环境变量我们在编译程序时经常提到PATH这个环境变量,特别是交叉编译时。PATH环境变量指定的是可执行程序的查找路径。PATH环境变量通常可以通过以下几种方法进行设置:(其他环境变量设置方法也类似)1. 利用export命令设置如设置PATH环境变量添加/home/test路径export PATH=$PATH:/home/test在添加时注意不要覆盖原有的PATH变量值。另原创 2021-11-11 09:36:30 · 4864 阅读 · 0 评论 -
glibc编译方法
我们在开发过程中,有时候可能需要根据我们的业务场景对glibc进行定制化修改,因此有必要了解glibc的编译方法。通常编译glibc需要以下几个步骤:1. 由于我们一般是在x86环境的编译服务器下编译运行在arm环境下的目标固件,因此我们通常需要利用交叉编译工具链。所以,我们首先需要指定我们的交叉编译工具链的路径。export PATH=$PATH:/home/xxxx(交叉编译工具链路径)2. 利用configure编译生成makefile文件...原创 2021-11-09 14:48:21 · 10824 阅读 · 1 评论 -
linux malloc内存数据结构分析
在linux用户态程序中,我们经常调用malloc接口根据自身需要灵活分配内存。但是我们是否了解malloc所分配的内存相关数据结构在内存中的具体分布呢?下面我们以实际程序实例介绍malloc分配的内存数据结构。malloc分配内存数据结构malloc分配的内存为一个个chunk,每个chunk有一个头部,对应的数据结构为malloc_chunk,具体如下:malloc_chunk结构体中各个变量含义如下:prev_size:当前一个chunk为free(空闲可用)时,prevent_s原创 2021-09-25 17:41:40 · 2452 阅读 · 1 评论 -
malloc底层实现原理
malloc接口对于我们来说肯定不陌生。我们经常使用该接口在堆上动态分配内存,但是我们有没有想过malloc的底层实现是什么样的呢?下面我们简单介绍一下malloc的底层实现原理。malloc作为一个库函数,用于根据开发人员的需求在堆上动态分配内存。根据需要分配的内存大小,实现方式分以下两类:分配的内存大小小于128k 分配的内存大小大于128k...原创 2021-05-19 17:49:11 · 1044 阅读 · 0 评论 -
extern “C“作用
123原创 2021-05-05 21:12:26 · 124 阅读 · 0 评论 -
const修饰指针用法
const关键字作用:当const修饰一个变量时,该变量则不能改变。const用法主要包括以下几类:const修饰普通变量,则该变量的值将不能通过赋值改变。 const int a = 10;a = 3; /* 此处错误,变量a的值不能改变 */printf("a:%d\n", a); ...原创 2021-05-05 15:00:27 · 836 阅读 · 0 评论 -
linux字节对齐规则
在计算内存对齐之前,首先梳理几个概念:数据成员自身对齐值:该数据成员的大小值 结构体或类的自身对齐值:其成员中自身对齐值最大的那个值 指定对齐值:linux 32默认为4,linux 64默认为8。可以通过@pragma pack (value)...原创 2021-05-04 16:06:03 · 1198 阅读 · 0 评论