内存跟 踪机制,也就是如果你有没有释放的内存,操作系统会帮你释放。
但操作系统依然不会释放你程序中所有产生了Memory Leak 的内存,所以, ( 最好还是你自己来做这个工作。
有的时候不知不觉就出现 MemoryLeak 了,而且在几百万行的代码中找无异于海底捞针,Rational 有一个工具叫 Purify,可能很好的帮你检查程序中的 Memory Leak)9、变量的初始化————————接上一条,变量一定要被初始化再使用。
C/C编译器在这个方面不会像 JAVA 一样帮你初始化,这一切都需要你自己来,如果你使用了没有初始化的变量,结果未知。
好的程序员从来都会在使用变量前初始化变量的。
如: (可以使用 calloc 分配一块全零的内 1 对 malloc 分配的内存进行 memset 清零操作。
存) 2 对一些栈上分配的 struct 或数组进行初始化。
(最好也是清零) 不过话又说回来了,初始化也会造成系统运行时间有一定的开销,所以,也不要对所有的变量做初始化,这个也没有意义。
好的程序员知道哪些变量需要初始化,哪些则不需要。
如:以下这种情况,则不需要。
char pstr / 一个字符串 / pstr char malloc 50 if pstr NULL exit0 strcpy pstr quotHello Wroldquot (指针是一个危险的东西,一定要初始化)但如果是下面一种情况,最好进行内存初始化。
char pstr / 一个字符串数组 / pstr char malloc 50sizeofchar if pstr NULL exit0 / 让数组中的指针都指向 NULL / memset pstr 0 50sizeofchar 而对于全局变量,和静态变量,一定要声明时就初始化。
因为你不知道它第一次会在哪里被使用。
所以使用前初始这些变量是比较不现实的,一定要在声明时就初始化它们。
如: Links plnk NULL / 对于全局变量 plnk 初始化为 NULL /10、h 和 c 文件的使用————————— ,CH 文件和 C 文件怎么用呢?一般来说,H 文件中是 declare(声明) 文件中是 define(定义)。
因为 C 文件要编译成库文件(Windows 下 是.obj/.lib,UNIX 下是.o/.a),如果别人要使用你的函数,那么就要引用你的 H 文件,所以,H 文件中一般是变量、宏定义、枚举、结构和函 数接口的声明,就像一个接口说明文件一样。
而 C 文件则是实现细节。
H 文件和 C 文件最大的用处就是声明和实现分开。
这个特性应该是公认的了,但 我仍然看到有些人喜欢把函数写在 H 文件中,这种习惯很不好。
(如果是 C话,对于其模板函数,在 VC 中只有把实现和声明都写在一个文件中,因为 VC 不支 持 export 关键字)。
而且,如果在 H 文件中写上函数的实现,你还得在 makefile 中把头文件的依赖关系也加上去,这个就会让你的makefile 很不规范。
最后,有一个最需要注意的地方就是:带初始化的全局变量不要放在 H 文件中!例如有一个处理错误信息的结构: char errmsg / 0 / quotNo errorquot / 1 / quotOpen file errorquot / 2 / quotFailed in sending/receiving a messagequot / 3 / quotBad argumentsquot / 4 / quotMemeroy is not enoughquot / 5 / quotService is down try laterquot / 6 / quotUnknow informationquot / 7 / quotA socket operation has failedquot / 8 / quotPermission den.
上一篇:
C语言课程设计.简易计算器.报告
下一篇:
注重内涵建设实现社区卫生服务可持续发展——上海市杨浦区殷行社区卫生服务中心介绍