leiyahui

纸上得来终觉浅,绝知此事要躬行
malloc杀内存于无形

C语言中的malloc函数是分配内存用的,函数内部生命的变量也会分配内存,但是当函数释放的时候内存也就释放了,这样就不会占用内存了,但是malloc函数不同,

如下

typedef struct Node

{

int a;

Node* next;

}LNode,*LList;

LList a=(LList)malloc(sizeof(LNode));

这行是分配内存的代码,如果在一个函数中调用的了这个函数,函数分配的内存就一直存在除非把它释放了

free(a);

这行代码是释放内存的代码,

依次没有释放内存没有关系,但是如果说函数被调用多次,就很容易出现问题,

比如说我写了一个象棋程序,其中只分配了如上例大小的结构体的内存,没有释放

那段代码运行了几亿次,每次我的程序都内存出问题,后来我才发现是什么原因。

所以自己分配的内存,含着泪也要把它释放了

posted on 2015-12-06 20:34  雷大叔  阅读(262)  评论(0编辑  收藏  举报