c语言 内存释放

1,一般函数内部定义的变量是在栈上,在函数退出后,被自动释放。

2,全局和静态变量,只要你的进程是在main正常返回,也会被释放。

3,通过malloc/calloc/realloc分配的,则需要手动释放,free(*pointer);

需要注意的一点是,如果在dll中定义的,这必须要在dll中定义一个释放的方法。否则不能被释放。

例如:

typedef struct AA{

int a;

char * b;

} aa

占用的内存空间为int为4位,char*因为是指针所以为4位,共8位。int len = sizeof(aa);即len为8;

int lenResult = len * n;//n个struct

 aa *p=NULL;p = (aa*)malloc(lenResult);

因为b也是指针,所以,在赋值时,也要为b申请空间。

可以总结出一个函数

char* getMemPointer(int num)
{
 return (char*)malloc(sizeof(char)*num);
}

使用就比较简单了。

释放的时候,正常的时候,一一释放。

特殊:

如果在dll中,释放b所指的空间,需要在dll中另外写一个专门释放的函数。

释放p的话,在调用的地方,还是在dll都可以。建议也放到dll中。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值