C
文章平均质量分 77
x简淡
好好学习天天向上
展开
-
C内存布局
C语言程序的内存空间主要有五个部分组成:代码段(.text)、数据段(.data)、BSS段(.bss)、堆、栈:C源代码到可执行文件的对应关系:可执行文件到程序被装载后的内存布局:1 BSS段 BSS段(bss segment)通常是用来存放程序中未初始化的全局变量和静态变量(文件内/函数内),这些未初始化数据在程序运行之前不需要占转载 2017-09-26 15:14:29 · 258 阅读 · 0 评论 -
物理地址、虚拟地址及逻辑地址
1 物理地址空间(Physical Address Space) 物理地址空间是实际存在于计算机中的,可以把它想象成物理内存。如在32位的机器上,物理空间的大小理论上可以达到2^32字节(4GB),但如果实际装在的内存不够4GB,那么有效的物理地址将会更少。例如,安装了1GB的内存的机器上,真正有用的物理地址空间应该是0x00000000~0x3FFFFFFF,余下部分在实际寻址中无效。转载 2017-09-27 14:02:14 · 1680 阅读 · 0 评论 -
C程序编译执行过程
C语言从源代码到可执行文件的过程:1 编译预处理 读取C源代码,对其中的伪指令(以#开头的指令)和特殊符号进行处理 伪指令主要包括以下四个方面: 1.1 宏定义指令 #define 定义宏 #undef 取消宏的定义 预定义宏:标准C中定义了一些对象宏,这些宏的名称以“__”(两个下划转载 2017-09-26 15:46:52 · 349 阅读 · 0 评论 -
typedef在结构体定义中的使用
原文链接:http://www.cnblogs.com/lzjsky/archive/2010/11/24/1886717.html一、结构体在代码中的两种常见定义形式 (1) 结构体类型定义 struct A { ... }; 定义{}中的结构体为一个名称是"A"的结构体。转载 2017-09-12 21:39:02 · 8358 阅读 · 0 评论 -
C语言中的整型溢出和移位溢出
1 整型溢出 原文链接:https://coolshell.cn/articles/11466.html 整型溢出,分为无符号整型溢出和有符号整型溢出。对于unsigned整型溢出,C的规范是有定义的——“溢出后的数会以2^(8*sizeof(type))作模运算”,也就是说,如果一个unsigned char(1字符,8bits)溢出了,会把溢出的值与256求模转载 2017-09-27 19:49:02 · 11812 阅读 · 3 评论 -
整数提升
测试过程中发现了数据相加超过类型范围的问题,以为是测试bug,查找资料才知道是运算过程中数据被整数提升了,这里一起学习总结一下整数提升和整型转换规则中的有符号数转换为无符号数。1 整数提升 C99标准中有明确提到整数提升的概念:"如果int能够表示原始类型中的所有数值,那么这个数值就被转成int型,否则,它被转成unsigned int型。这种规则被称为整型提升。所有其它类型都不会被原创 2017-09-27 15:07:33 · 2178 阅读 · 0 评论