关于生命周期,值传,内存泄漏的终极讨论
如果是定义一个指针,则要么通过函数&指针的形式在函数中为其分配内存,要么直接在下面通过malloc()为其分配内存
通过函数分配内存也有两种形式,一是在函数中利用malloc,别一种是一般的形式
不管何种形式,只要利用了malloc最后都要free(),不然会内存泄漏
如果是一般的句柄,结构体,类等一般变量,一般在函数结束时都被销毁,两种形式例外,
1,利用全局变量将其值保存了下来,
2.其中的记录信息被别的已存在的东西(且不会在函数结束时销毁)继cheng下来了,其被销毁也是自然的事情
其中第二种2种情况最常用
外函数传进来的东西,除非原函数定义为引用,或其是作为地址传过来的,其中的修改后的东西不会丢,因其是直接在原东西上做的修改,而原东西的生命期也不是他控制的
通常有时候看来信息会丢的东西没有丢就是因为函数原型是引用参数,这时候应该查看原型以更搞清楚,一般情况都是传址,传引用少,传值更少,因为这样的效率很低,只在传整形值时才会用到传值
一般传结构体类等,都是传址,API中传引用的也不多,也能是微软怕引用混乱吧
还有一种情况,函数结束时数据不会丢,假如在函数中这是一个指针,并且指针已经指向了内容,return(指针),则指针指向的数据不会丢失。参见:P285大师技巧