摘要: 函数的由来: 模块化程序设计: C语言中的模块化: 面向过程的程序设计: 函数的声明和定义: 声明和定义是不同的。示例如下: global.c如下: 第4行说明g_var在其它文件中定义,在这里不会再分配存储空间。第6行声明有struct Test这样一个结构体(并不是声明变量),这里是告诉编译器在 阅读全文
posted @ 2018-08-29 23:23 周伯通789 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 常见内存错误: 两次释放同一个指针是有问题的。 示例: 13行和41行两次释放了p,会导致程序崩溃。21行如果是奇数直接返回,也会导致问题。 运行如下: 在哪个函数申请的内存就在哪个函数释放。 free不能释放栈上的空间,否则产生段错误。 示例程序: 11、12定义结构体变量时,内部的指针没有初始化 阅读全文
posted @ 2018-08-29 22:46 周伯通789 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 野指针: 野指针的由来: 示例程序: 第13行越界之后就相当于操作野指针了。第8行将随意一个地址转换为指针,也相当于野指针。 运行结果如下: 基本原则: 示例: 第15行返回局部字符数组,是不正确的。结构体s中的name没有初始化,s.name和p都是野指针。 34-36行的内存拷贝也会产生越界。和 阅读全文
posted @ 2018-08-29 22:21 周伯通789 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 程序文件的一般布局: 加载程序加载文件时,根据文件头信息就可以知道这是一个什么样的文件。知道了是什么样的可执行程序就知道怎么运行它了。 程序与进程: 面试中的小问题: 包含脚本代码的文本文件是一种类型的可执行程序吗?如果是,对应什么样的进程呢? 脚本代码是可执行程序,但不是直接的可执行程序,是解释执 阅读全文
posted @ 2018-08-29 21:50 周伯通789 阅读(183) 评论(0) 推荐(0) 编辑