
C专家编程
文章平均质量分 89
《C专家编程》学习笔记
Charles Ray
现就职于某半导体公司。Software Programmer
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C专家编程 —— 运行时数据结构
当对一个可执行文件执行size命令时,比如size a.out就会打印出该文件的3个段,text, data, bss段的大小。这时将这个指针返回,我们再使用的时候,就会有问题,因为他已经被释放,所以他引用的资源可能无效也可能是其他值。而段在Intel x86模型中,表示一种设计结果,设计地址空间并非一个整体而是分成一些64K大小的区域,称为段。程序运行时系统维护一个指针,通常位于寄存器中,称为sp,用于提示堆栈当前的顶部位置。当一个函数调用另一个函数时,堆栈的状态就会如图所示,堆栈向下生长。原创 2023-06-24 22:23:45 · 854 阅读 · 0 评论 -
C专家编程 —— 对链接的思考
如果可执行文件只包含了文件名,让载入器在运行时才寻找所需要的函数,我们称之为动态链接。并且即使是静态链接实际上也并不是将整个库都装入到可执行文件中,而只是将所需要用到的函数装入到可执行文件。可执行文件必须能找到指定的动态链接路径,函数库不能随便移动,因为可执行文件需要定位到函数库路径。程序将在运行时去寻找函数库集合中的函数执行,而不是将他们作为自身可执行文件的一部分。如果函数库的一份副本是可执行文件的物理组成部分,我们称之为静态链接。上图比较我们可以看出静态链接和动态链接生成的可执行文件差距非常大。原创 2023-06-22 23:40:01 · 412 阅读 · 0 评论 -
C专家编程 —— C语言的前世今生
这里看到因为sizeof返回的是unsigned类型,在if语句中,d和TOTAL_E比较则会升级为unsigned类型,而-1则是一个非常大的数,那么这个表达式始终为假,就达不到比较的目的了。因为他在K&R C 的基础上添加了一些新的东西,并使得一些特性合法。const一般用作传参const char * 表示他指向的数据是只读的,但是这个指针是可以改变的。C语言相比B语言使用编译模式而不是解释模式,引入了类型系统,每个变量必须先声明类型再使用。而C语言就是以效率为主线,也就是编译器设计者的思想。原创 2023-06-21 11:17:39 · 555 阅读 · 0 评论