C Monster
文章平均质量分 82
有时需要偏执狂
一定要搞懂,千万不要心存侥幸,否则一些问题会让你痛苦不堪(源码面前,了无秘密)。
拥有一某三分地不容易,贵在坚持。
展开
-
内存空间分配,以及malloc、calloc、realloc、alloca、realloc的区别
1、存储类别作用域:程序可访问标识符的区域块作用域:从定义处到块结尾函数作用域:仅仅用与goto,goto标签整个文件有效文件作用域:从定义处,到该文件结尾。 全局变量具有文件作用域,局部变量处于块作用域,goto标签函数作用域。存储期:通过标识符访问对象的生存期静态存储期:程序执行期间一直存在自动存储期:程序进入变量定义,分配内存,退出时候释放此变量所占内存,例如的函数调用,这些变量都存原创 2017-08-16 20:28:34 · 905 阅读 · 0 评论 -
关于C语言的优秀文章
C语言结构体里的成员数组和指针原创 2018-05-13 17:02:16 · 1729 阅读 · 0 评论 -
C标准库常用函数实现
下面介绍一些常用的标准库库函数,因为经常用到,所以搞懂内部源代码很重要,也是进一步学习C语言指针很有用。慢慢更新,很重要的过程。为了防止和库函数名重复,例如strncpy则表示为mystrncpy测试,但是mystrncpy里面的具体实现和标准库strncpy实现一样。string.hstrlensize_t mystrlen(const char *s)//s指向的内容只读{ con原创 2017-09-09 11:05:44 · 2894 阅读 · 0 评论 -
深入理解C语言
大型源代码里面经常出现一些晦涩的C语言及其规则。 本贴着重记录这些代码以及支撑代码运行的C语言神奇用法。 搞懂这些C语言面试就是无敌开挂模式了牛人讲解的C语言为啥难。语言的歧义 C语言的谜题 谁说C语言很简单?C 语言中的指针和内存泄漏C 语言中的指针和内存泄漏 这篇文章简单讲解了关于动态内存的东西,这些东西一般在大型程序里面都是必须十分注意的问题。选择整数数据类.........原创 2017-09-22 10:21:02 · 6257 阅读 · 1 评论 -
内存对齐
复杂数据类型存放,以及各种数据类型对齐问题的处理。原创 2017-09-08 10:10:24 · 213 阅读 · 0 评论 -
从机器语言角度理解值传递和地址传递
C语言过程调用,参数传递的过程。原创 2017-10-22 15:53:05 · 248 阅读 · 0 评论 -
大小端问题
CPU大小端两种检测方法因为某些变量占用多个字节,一个字节对应一个地址,导致字节存放顺序的问题,产生了大小端的问题。 大端模式就是变量的高字节存储在低地址。 小端模式就是变量的高字节存储在高地址。 假如一个int a = 0x1234;占用2字节,地址默认递增生长。 内存地址 大端a存储方式 小端a存储形式 0x40000 12 34 0x40001 34 1原创 2017-09-06 09:52:58 · 1294 阅读 · 0 评论 -
Volatile解释
编译器编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并,常量传播等优化,进一步可以消除一些多余的代码减少占用空间。但有时这些优化不是程序所需要的,这时可以用volatile关键字禁止做这些优化。volatile解释volatile的本意是“易变的”意思,表示定义的这个变量是容易变化的。 因为访问寄存器要比访问内存单元快的多,所以编译器一般原创 2017-09-05 10:37:02 · 993 阅读 · 0 评论 -
结构体、联合体合体以及位操作
结构体定义有三种形式: 1,struct 结构体标识符{};struct 结构体标识符 变量。 2,struct 结构体标识符{}*指针变量名; 3,struct{}*指针变量名;这种结构体只可用一次,因为无结构体名。 4,typedef struct{}PIO_SRT;将PIO_SRT定义为结构体类型别名,以后可以用PIO_SRT定义此类型结构体。 结构体初始化器:通过.成员名 的方式以原创 2017-09-07 11:06:01 · 3654 阅读 · 0 评论 -
宏定义
宏定义偏移地址头文件变参数宏定义原创 2017-09-07 09:46:09 · 1179 阅读 · 0 评论 -
数据对齐问题
对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。CASAPP上面有讲解。原创 2017-09-06 21:38:36 · 555 阅读 · 0 评论