
C语言
ordeder
关注Linux&TCPIP&Nginx&Redis
展开
-
union共用体及其实例分析
【共用体定义】百度百科共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。【Kernel中的一个实例】struct dst_entry{ struct dst_entry *next; ...}...struct rtabl原创 2013-08-18 22:53:43 · 1952 阅读 · 0 评论 -
指针类型的强制转化及实例分析
【前言】1.指针是一个记录变量地址的变量,在32位系统中指针变量就是一个32bit的变量(一个int的大小)2.声明不同类型的指针变量隐含了两个重要信息:a.指针类型决定了指针结合指针运算符的时候,读取内存的字节数;b.在指针移动(加减1)的时候在内存中移动的字节数。【实例】#include int main(){原创 2013-08-31 12:02:53 · 1324 阅读 · 0 评论 -
Linux内核-从sk_buff{}结构学习“双循环双链表”的实现
【背景】sk_buff{}结构是linux 网络协议栈的重要结构体,本结构描述的数据包(package)穿梭于运输层~链路层之间。每个数据包都有对应的sk_buff进行描述,而系统对这么多的sk_buff的处理时以循环双链表的形式组织的。见如下图:【数据结构】//链表表头,维护一个表,作为一个链表的标杆,不做具体数据的存储struct sk_buff_head {原创 2013-09-14 14:19:02 · 2416 阅读 · 4 评论 -
offsetof(struct_type, member) : (type *)0
【0指针】(type *)0 : 好比type结构存放于0其实的内存地址中(在编译的时候换算,不会执行)((type *)0)->member : 0指针指向的type结构中的member成员&((type *)0)->member : 0指针指向的type结构中的member成员的地址(相对于0地址)typeof (((type *)0)->member) 0指针指向的type结原创 2013-08-23 15:33:35 · 3417 阅读 · 1 评论 -
函数调用过程-栈帧 和 进程的关系
程序中,一个函数是一个过程,这个过程可以分为包括传入参数、过程代码、返回三部分构成。由于一个函数过程需要用到内部变量、临时变量等,所以需要在进程空间的栈空间分配一段存储片段来存储函数过程中的这些参数,该内存片段即为栈帧。原创 2014-03-03 22:56:42 · 4099 阅读 · 0 评论 -
Win32 线程的创建&信号量临界资源&事件对象
背景:写了个程序,主要实现的功能为主线程创建两个子线程,之后主线程进入等待事件的循环。子线程1对临界资源cnt的值减2并输出cnt的值。子线程2对cnt的值加1并输出cnt的值,且当cnt为50的时候触发事件对象hend_even,子进程2退出。主线程收到hend_even后杀死子线程1,之后进入scanf阻塞。。。代码示例:#include #include DWORD WIN原创 2014-04-28 15:54:56 · 1633 阅读 · 0 评论 -
关于C中格式化输出的一些笔记
printf("%.*s",with,str); “*” 是作原创 2014-08-25 18:47:53 · 1153 阅读 · 0 评论