Python源码剖析笔记.pdf

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
目 录 Python源码剖析笔记0-C语言基础回顾 Python源码剖析笔记1-Python对象初见 Python源码剖析笔记2-Python整数对象 Python源码剖析笔记3-Python执行原理初探 Python源码剖析笔记4-内建数据类型 Python源码剖析笔记5-模块机制 Python源码剖析笔记6-函数机制 Python源码剖析笔记7-类机制 本文档使用 看云 构建 - 2 - Python源码剖析笔记0-C语言基础回顾 Python源码剖析笔记0-C语言基础回顾 1 关于ELF文件 2 关于指针 2.1 指针易错点 2.2 指针和数组 3 关于typedef和#define 4 关于结构体 4.1 不完全类型 4.2 不完全类型结构体 4.3 结构体初始化和大小 4.4 柔性数组 5 总结 6 参考资料 要分析python源码 ,C语言的基础不能少 ,特别是指针和结构体等知识。这篇文章先回顾 C语言基础 ,方便后续代码的阅读。 1 关于ELF文件 linux中的C编译得到的目标文件和可执行文件都是ELF格式的 ,可执行文件中以segment来 划分 ,目标文件中 ,我们是以section划分。一个segment包含一个或多个section ,通过 readelf命令可以看到完整的section和segment信息。看一个栗子 : char pear[40]; static double peach; int mango 13; char *str "hello"; static long melon 2001; int main() { int i 3, j; pear[5] i; peach 2.0 * mango; return 0; } 本文档使用 看云 构建 - 3 - Python源码剖析笔记0-C语言基础回顾 这是个简单的C语言代码 ,现在分析下各个变量存储的位置。其中mango ,melon属于data section ,pear和peach属于common section中 ,而且peach和melon加了static ,说明只 能本文件使用。而str对应的字符串"helloworld"存储在rodata section中。main函数归属于 text section ,函数中的局部变量i,j在运行时在栈中分配空间。注意到前面说的全局未初始化 变量peach和pear是在common section中 ,这是为了强弱符号而设置的。那其实最终链接 成为可执行文件后 ,会归于BSS segment。同样的 ,text section和rodata section在可执行 文件中都属于同一个segment。 更多ELF内容参见 《程序猿的自我修养》一书。 2 关于指针 想当年学习C语言最怕的就是指针了 ,当然 《c与指针》和 《c专家编程》以及 《高质量C编 程》里面对指针都有很好的讲解 ,系统回顾还是看书吧 ,这里我总结了一些基础和易错的 点。环境是ubuntu14.10的32位系统 ,编译工具GCC。 2.1 指针易错点 /*** 指针易错示例1 demo1.c ***/ int main() { char *str "helloworld"; //[1] str[1] 'M'; //[2] 会报错 char arr[] "hello"; //[3] arr[1] 'M'; return 0; } demo1.c中 ,我们定义了一个指针和数组分别指向了一个字符串 ,然后修改字符串中某个字 符的值。编译后运行会发现[2]处会报错 ,这是为什么呢 ?用命令 ` gcc -S de

文档评论(0)

max + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档