野指针和NULL
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
声明一个指针后并未对它进行初始化,这样的指针称为野指针,野指针是不能被使用的,因为它指向的空间并不可用,因此在C语言中野指针是非常危险的。
通常情况下我们声明一个指针后如果暂不使用,可以给这个指针赋值为NULL
。
前面我们讲过指针都是指向地址的,有些情况下是我们先申请内存再往这块内存里面存数据。C语言提供一个分配内存的函数--malloc
函数,这个函数的使用方法:
p = (char *) malloc(100);
p是一个char型的指针,(char *)括号中的char
类型要与指针p的类型保持一致,malloc
后面的括号中的数字是你想分配内存的大小。
内存分配使用完之后还要将这个内存释放掉,这叫过河拆桥,而且桥一定要拆掉才行。释放函数就会free()
,使用方法:
free(p);
注意 malloc和free必须是成对出现的,分配完内存后必须记得释放。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *p;
p = (char *) malloc(1); //动态分配内存
/*分配内存后如果指针还为NULL就是没有分配成功*/
if (p == NULL) {
printf("内存分配失败。");
exit(-1); //退出
}
*p = 'c';
printf("p指针中的内容=%c", *p);
free(p); //内存释放
return 0;
}
上面的程序就是一个内存分配、使用、释放的过程,内存分配后都会对其进行判断是否分配成功,如果分配不成功程序退出。
在线练习
{$ activeFileHint $}