指针的动态初始化malloc与销毁free

 指针动态初始化:

int *p = (int*)malloc(sizeof(int)*3);//初始化为指向3个元素的数组
if(!p) exit -1;//这个地方一定要进行判断,因为若动态初始化不成功,在使用p[0]、p[1]、p[2]时报错。

指针的销毁:

free(p);
p = NULL;//避免p为野指针,需要赋值为NULL
         //p中的值仍为原先的内存地址,此时要进行赋值NULL。
         //释放内存后,赋值为NULL的好处还有:当p为NULL时,即便再free n次也不会出错!!!

注意:free的含义:free之后,是将由malloc分配的内存交还给系统支配,而代码支配不了了,即由malloc分配的内存中内容由系统进行处理。

其中存在两个值:一个是指针的值,指针的值并未发生改变,还是原先指向malloc分配的地址。

另一个是malloc分配的内存值,这其中的值取决于系统有没有使用该内存,如果使用了,该内存中的值会发生改变,如果没有使用,则还是保持原先的值。

总结:

初始化要判断内存是否申请成功;

销毁时要赋值NULL 。

发布了25 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/modi000/article/details/104203709