C
JoggingPig
多读好书、多总结、多扩展、多实践
展开
-
栈和栈帧
函数的调用和返回使栈的增长和收缩呈线性。专用寄存器---栈指针(stack pointer) , 用千跟踪当前栈顶。每次调用函数时,会在栈上新分配一帧,每当函数返回时,再从栈上将此帧移去。内核栈是每个进程保留在内核内存中的内存区域;内核栈在执行系统调用的过程中供(内核)内部函数调用使用;每个(用户)栈帧包括如下信息:函数实参和局部变量: 由于局部变量都是在调用函数时自动创建的,因此在C 语言中称其为自动变量; 函数返回时将自动销毁...原创 2020-08-31 12:27:14 · 341 阅读 · 0 评论 -
环境列表
什么是环境列表?进程用户空间内存中维护的一组环境变量;环境列表的元素组成是?列表中每个元素都是由名称(name)及其值(value)组成;多数shell中,用export name='value' 来创建环境变量;每个进程都有一份环境列表;子进程会继承父进程的环境副本;子进程可以在exec()函数调用中修改从父进程继承来的环境副本;C 语言程序可使用外部变量(char **environ) 来访问环境;char **environ 可以理解为一个指...原创 2020-08-29 15:17:16 · 220 阅读 · 0 评论 -
命令行参数
什么是命令行参数?程序以运行时在命令行中输入的内容;C语言程序中可以访问命令行参数;C中如何访问命令行参数?在程序的main函数中做声明:int main(int argc, char *argv[])argc(arguments count)参数个数;argv(arguments vector)参数向量---字符指针数组、字符串数组;C中,首个字符串argv[0], 标识程序名本身;参考书籍:Linux/Unix系统编程手册...原创 2020-08-29 14:49:07 · 175 阅读 · 0 评论 -
C程序的存储空间和布局
知道程序语言的构成,才可以去解析语言(编译器的工作);C程序(C语言编写的程序)的组成: 正文段(文本段) cpu执行的机器指令部分; 通常,正文段可共享---频繁执行的程序在存储器中也只需要一个副本; 通常,正文段是只读的---防止程序意外修改其指令; 初始化数据段(数据段) 包含程序中需明确赋初值的变量; 未初始化的数据段(bss段,block started by symbol---由符号...原创 2020-08-19 13:11:00 · 332 阅读 · 0 评论 -
字符串处理函数
Android C库:http://androidxref.com/9.0.0_r3/xref/bionic/libc/upstream-openbsd/lib/libc/string//*37 * sizeof(word) MUST BE A POWER OF TWO38 * SO THAT wmask BELOW IS ALL ONES39 */40typedef long word; /* "word" used for optimal copy speed */4142#defin原创 2020-06-28 19:38:04 · 174 阅读 · 0 评论 -
双向链表的实现
//定义一个双向链表struct listnode { struct listnode *next; struct listnode *prev;};//定位包含一个链表节点的结构体的首地址#define node_to_item(node, container, member) \ (container *) (((char*) (node)) - offsetof(container, member))//链表的声明#define list_declare(.原创 2020-06-25 12:33:35 · 170 阅读 · 0 评论