野指针是没有初始化的指针,它非法的指向一块内存空间,会造成内存泄露,产生段错误。
避免野指针有以下几点:
(1)养成良好的变成习惯,当不能确定指针指向时,初始化为空;
(2)当給初始化指针赋值时,要用malloc给其分配内存空间。
(3)检查空间是否分配成功
(4)清理内存空间
(5)使用完内存空间后释放
(6)将指针置为空
#include <stdio.h>
int main()
{
char *ptr = (char*)malloc(sizeof(char) * 100); //分配内存空间
if(ptr == NULL) //检查空间是否分配成功
{
printf("malloc error! \n");
exit(1);
}
memset(ptr,'\0',sizeof(char) * 100); //清理内存空间
scanf("%s",ptr);
char*temp = ptr;
while(*temp != '\0')
{
temp++;
}
printf("ptr = %s \n",ptr);
free(ptr); //释放空间
ptr = NULL; //将指针置为空
return 0;
}