关于变量生命周期,值传,内存泄漏的终极讨论

本文探讨了生命周期、值传递及内存泄漏等问题。详细介绍了指针内存分配的方法及其释放的重要性,讨论了不同类型的变量生命周期,以及如何避免内存泄漏。此外,文中还提到了函数参数传递的不同方式及其对内存的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

关于生命周期,值传,内存泄漏的终极讨论
如果是定义一个指针,则要么通过函数&指针的形式在函数中为其分配内存,要么直接在下面通过malloc()为其分配内存
通过函数分配内存也有两种形式,一是在函数中利用malloc,别一种是一般的形式
不管何种形式,只要利用了malloc最后都要free(),不然会内存泄漏

如果是一般的句柄,结构体,类等一般变量,一般在函数结束时都被销毁,两种形式例外,
1,利用全局变量将其值保存了下来,
2.其中的记录信息被别的已存在的东西(且不会在函数结束时销毁)继cheng下来了,其被销毁也是自然的事情
其中第二种2种情况最常用

外函数传进来的东西,除非原函数定义为引用,或其是作为地址传过来的,其中的修改后的东西不会丢,因其是直接在原东西上做的修改,而原东西的生命期也不是他控制的
通常有时候看来信息会丢的东西没有丢就是因为函数原型是引用参数,这时候应该查看原型以更搞清楚,一般情况都是传址,传引用少,传值更少,因为这样的效率很低,只在传整形值时才会用到传值

一般传结构体类等,都是传址,API中传引用的也不多,也能是微软怕引用混乱吧

还有一种情况,函数结束时数据不会丢,假如在函数中这是一个指针,并且指针已经指向了内容,return(指针),则指针指向的数据不会丢失。参见:P285大师技巧 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值