想要避免野指针,首先要知道什么是野指针?
野指针就是随机指向内存中一块内存。野指针可能导致内存泄漏,在指向不可访问的内存或已经释放的内存的时候,就会出现段错误,也就是内存错误。
如何避免野指针?
1在定义指针时,初始化为空。同样在释放指针后,也有将指针指向NULL。
NULL 是个宏,指向0地址,0地址是不允许访问和操作的!
#define NULL (void *)0
指向NULL可以提醒程序员不能对它进行操作。有提醒作用!还有就是如果有段错误,有利于调试。
2当对野指针进行赋值操作时,判断地址是否合法。
可以用if(NULL != p)判断,也可以用assert(NULL != p) ,assert是个宏,当括号里条件不满足时,程序终止并提示出错
例:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE sizeof(char) * 100
int main()
{
char *ptr = (char *)malloc(MAX_SIZE);//分配空间
if(NULL == ptr) //判断是否分配成功
{
printf("malloc error!\n");
exit(1);
}
memset(ptr,0,MAX_SIZE); //使用前初始化
scanf("%s",ptr);
printf("pyr = %s\n",ptr);
free(ptr); //分配后要释放
ptr = NULL; //释放后要赋空
return 0;
}
一个在努力中的未来程序员,如果有更好的想法,欢迎评论。