您的位置:首页 > 编程语言 > C语言/C++

c语言学习笔记36

2016-06-24 22:39 351 查看
代码‑  free函数把指针怎么了

#include <stdio.h> /*使用printf要包含的头文件*/

#include <stdlib.h>

void main(void)/*主函数*/

{

/*声明一int型指针p,并申请一块动态内存,用其首地址为p初始化*/

int *p=(int*)malloc(10*sizeof(int));

if(p==NULL) /*防错处理,看内存申请是否成功*/

{

printf("内存申请失败,退出");

return;

}

printf("p的值是%p\n",p); /*输出p的值*/

free(p); /*释放动态内存*/

printf("p的值是%p\n",p); /*输出p的值*/

getchar();/*等待,按任意键继续*/

}

输出结果为: p的值是0x00146430    p的值是0x00146430

代码‑  释放已经释放了的内存

#include <stdio.h>/*使用printf要包含的头文件*/

#include <stdlib.h>

void main(void)/*主函数*/

{/*声明一int型指针p,并申请一块动态内存,用其首地址为p初始化*/

int *p=(int*)malloc(10*sizeof(int));

if(p==NULL)  /*防错处理,看内存申请是否成功*/

{

printf("内存申请失败,退出");

return;

}

int *z=p;

free(p); /*释放动态内存*/

free(z);/*再次释放内存*/

getchar();/*等待,按任意键继续*/

}

“释放动态内存,并不意味着指针会消亡,也不意味着指针的值会改变”,但“指针消亡,动态内存是否会自动释放呢”?否,如果没有释放内存,但记录该块内存的指针消亡了或者是指针的值发生了改变,这块内存将永远得不到回收,造成了内存泄漏,如果程序长时间运行的话,不断的泄漏可能使得系统内存耗尽而崩溃。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: