不能返回函式內部new分配的記憶體的引用

2021-07-14 21:47:00 字數 450 閱讀 3741

以前在開發電子秤介面動態庫時,曾嘗試在用於獲取重量的函式外面定義乙個字串指標,然後作為引數傳入函式內部,然後在函式內部new,用來輸出函式執行過程中發生的錯誤。但是總是出錯,沒有找到原因,後來無意中看到了下面的一段說明,忘記摘錄出處了,感謝作者。

如下:不能返回函式內部new分配的記憶體的引用(這個要注意啦,很多人沒意識到,哈哈。。。

這條可以參照

effective c++[1]

的item 31

。雖然不存在區域性變數的被動銷毀問題,可對於這種情況(返回函式內部

new分配記憶體的引用),又面臨其它尷尬局面。例如,被函式返回的引用只是作為乙個臨時變數出現,而沒有被賦予乙個實際的變數,那麼這個引用所指向的空間(由

new分配)就無法釋放,造成memory leak

注意返回函式內部的變數(C )

這個問題是乙個很經典的問題,返回區域性函式內部變數的值。當然優秀的程式設計師自然很清楚,但是對於一些小細節,也難免會犯上一些簡單的錯誤。一般我們會通過直接需要接受返回值的物件放入函式的引數裡面如 copyobject a a1,a a2 一般使用上述的方法來成功修改a2的值。反過來我們寫這樣乙個函式...

返回函式的函式

廖雪峰python課程裡的 作業的兩種實現方法 1.def createcounter a 0 def counter nonlocal a nonlocal 函式是 引用外部函式 的函式 a 1 a 1等同於a a 1 return a return counter countera create...

返回函式的學習

返回函式指的是呼叫乙個函式時,函式的返回值仍然是乙個函式 但是並非是遞迴形式的自己呼叫自己 而是函式的巢狀呼叫返回函式的好處與生成器類似,使用返回函式時,並不需要立刻計算,而是等到有需要時再來計算對應的值1.返回函式呼叫的內部函式未被執行 2.返回函式呼叫了函式本身的引數或者內部變數 3.只有呼叫時...