在第三方庫假設這樣的功能:你如何實現一個包裝函數來改變其他函數的返回類型?
rttype func(...);
你怎麼寫一個包裝函數的功能相同,但僅在其返回類型爲rttype *
而不是rttype
不同?
在第三方庫假設這樣的功能:你如何實現一個包裝函數來改變其他函數的返回類型?
rttype func(...);
你怎麼寫一個包裝函數的功能相同,但僅在其返回類型爲rttype *
而不是rttype
不同?
您將不得不分配全局內存(堆上的內存),在那裏分配rttype,然後返回一個指向分配內存的指針。當然,這樣做你必須稍後處理釋放內存。
但是,通過這樣做,您正在修改函數的語義和設計,您應該記住這一點,並負責任地做出其他更改以尊重這一點。
一般來說,你沒有。有時候走向另一個方向可能是合理的,但是當你返回一個指針時,你會提出一生的問題和所有權問題。特別是,你是在返回一個指針,而且它的責任(如果有的話)是爲了釋放它指向的內存?
這些問題通常會影響整體設計,所以它們不是您可以在簡單包裝中合理解決的問題。
那麼,你有什麼嘗試? –
我試過的是,我不能簡單地通過'&ret'來完成,因爲它在函數退出後超出了範圍。 –