Expert C Programming 总结(三)

来源:互联网 发布:未找到软件源 编辑:程序博客网 时间:2024/05/20 03:41


   1. 准则:不要让程序中的任何符号成为全局的,除非有意把它们作为程序的接口之一。

   

   2. 编程语言理论的经典对立之一就是代码和数据的区别。蠕虫的攻击方法的原理就是把数据转换为代码。代码和数据的区别也可以认为是编译时和运行时的分界线。

 

   3. 在unix中,段表示一个二进制文件相关的内容块。

 

  4.数据段包含经过初始化的全局和静态变量以及它们的值。bbs段的大小从可执行文件中得到,然后链接器得到这个大小内存块,紧跟在数据段之后。当这个内存区进入程序的地址空间后全部清零。

 

  5.  虚拟地址空间的最低部分未被映射。也就是说,它位于进程的地址空间内,但并未赋予物理地址,所以任何对它的引用都是非法的。在典型情况下,它是从地址零开始的几k字节。它用于捕捉使用空指针和小整形值的指针引用内存的情况。


  6. 运行是的数据结构有好几种:堆栈,活动记录,数据,堆等。


 7. 堆栈为函数内部声明的局部变量提供存储空间。

 8. 进行函数调用时,堆栈存储与此有关的一些维护性信息。 

 9.当每个函数被调用的时候,都会产生一个过程活动记录。

 

 10. c语言中的所有函数在词法层次中都是位于最顶层。


 11. 当控制从一个函数转到另一个函数时,堆栈的新状态显示在下面。程序从main开始执行,堆栈向下生长。


12 . 编译器设计者通过不存储使用的信息来提高速度。其他的优化措施包括把信息保存于寄存器而不是堆栈中。




原创粉丝点击