簡體   English   中英

我怎么知道將指針傳遞給函數后可以釋放指針?

[英]How do I know it is OK to free the pointer after passed it to a function?

例如, https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#gdk-window-begin-draw-frame ,將指向區域的指針作為參數。 那么,我怎么知道它沒有將其存儲在以后使用的地方? 還是可以在調用函數后立即釋放指針? GTK中是否有常規程序?

謝謝。

通常,可以通過指針響應的“所有權”的概念來解決此問題。 相關的內存區域。

本質上,該函數必須定義它是否擁有該區域的所有權(在這種情況下,您可以將其傳遞給該函數,而不必關心它,但是OTOH必須以某種方式將其分配給該函數),或者只是“借用”指針。 在這種情況下,它仍然是您的,該函數只是暫時使用它。

第三種選擇是混合情況:該函數借用所有權,但是要求您保持內存保持分配狀態(即可用),直到發生特定操作(例如釋放給定資源)為止。 在這種情況下,從中選擇內存(堆,堆棧,靜態內存等)是您的選擇,但您有責任保持足夠長的可用性。

函數的功能應記錄在某處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM