野指针

来源:互联网 发布:大学软件开发专业课程 编辑:程序博客网 时间:2024/05/21 18:43

所谓野指针就是没有进行初始化的指针,系统会默认随机对其进行初始化,当我们调用这个指针的时候就会发生内存泄露,造成段错误。所以我们要尽量避免野指针。

如何避免野指针呢?

1.我们要有良好的编码习惯,当指针不确定指向时,将指针初始化为NULL。

char *ptr =NULL;

NULL   //#define  NULL (void *) 0

NULL是内存零地址,而且不能对零地址对应的内存空间进行操作。

这样当我们检查段错误时就会引起我们的重视,对其进行分析检查。

2.当要向指针指向指向的空间赋值时要检查其是否分配了空间,如果没有分配空间,我们需要为其分配空间。

(char *) malloc (sizeof(char)*100);

malloc 函数可以分配空间,sizeof(char)*100可以提高代码的移植性。

malloc 函数的返回值是一个万能指针 void *,万能指针可以保存任何类型指针的值,但是不能对其进行取值操作,所以用(char *)强制转化类型,使其返回值与我们需要的指针类型一致。

这里我们需要注意malloc 函数如果分配内存空间不成功 的话会返回一个NULL指针,所以我们需要检查内存空间是否分配成功。

3.检查内存空间是否分配成功

#include <stdio.h>

char *ptr=NULL ;

ptr =  (char *)malloc(sizeof(char)*100);

if(ptr == NULL)

{

printf("malloc error!\n");

exit(1);                                      /*退出程序*/

}

4.要对我们分配的内存空间进行清理,我们可以调用memset函数。

memset(ptr, '\0' , sizeof(char)*100);

5.当我们用完这个内存空间后,我们需要将这个空间释放。

free(ptr);

6.释放完空间后,我们需要将这个指针再置为NULL。



0 0