首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

这么会泄露内存吗

2013-03-22 
这样会泄露内存吗?#includestdio.h#includemalloc.htypedef int DataTypetypedef struct node{DataTy

这样会泄露内存吗?
#include"stdio.h"
#include"malloc.h"
typedef int DataType;
typedef struct node{
DataType data;
struct node *next;
}LNode,*LinkList;
LinkList Creat_LinkList(int n)//构造链表函数
{
LinkList H,Q,P;
H=(LinkList)malloc(sizeof(LNode));
P=H;
printf("请输入链表中要存放的数字:");
for(int i=0;i<n;i++){
Q=(LinkList)malloc(sizeof(LNode));
scanf("%d",&Q->data);
P->next=Q;
P=Q;
}
Q->next=NULL;
return H;
}
double average_LinkList(LinkList H)//求单链表数据域的平均值
{
LinkList Q=H->next;
DataType average=0;
int count=0;
while(Q){
average+=Q->data;
count++;
Q=Q->next;
}
return (double)average/count;
}
/*int Delete_LinkList(LinkList H)//删除链表
{
LinkList Q,P;
Q=H;
P=H;
while(Q){
Q=Q->next;
free(P);
P=Q;
}
if(!H->next )
return 1;
else 
return 0;
}*/
int main()
{
int n;
printf("请输入你的链表中有多少个节点:");
scanf("%d",&n);
LinkList H=Creat_LinkList(n);
printf("平均值是:%f", average_LinkList(H));
    if(Delete_LinkList(H))
printf("删除成功!!!");
else
printf("删除失败!!!");
return 0;
}
如果这样直接编译后运行,不知道那个用malloc申请的内存是不是在程序运行完后,还会被占用着,特来求解?希望回答








[解决办法]
free(a); //释放掉使用的内存地址
[解决办法]
进程结束后,系统会自动释放进程所用到的内存,所以malloc分配的内存,在运行结束后就会自动释放掉的
[解决办法]
要养成使用完后及时释放内存的习惯
[解决办法]
如果就“要不要紧”,这些小运算就算泄露了也只是内存量中的沧海一粟,被如同大象被蚂蚁踢了一脚的感觉。
如果你没有把握知道有没有泄露,只管认准malloc和free永远要配对。

热点排行