例如https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#gdk-window-begin-draw-frame,将指向region的指针作为参数。那么,我怎么知道它没有将其存储在以后使用的地方?还是可以在调用函数后立即释放指针? GTK中有任何常规程序吗?
谢谢。
答案 0 :(得分:3)
通常,可以使用指针的“所有权”概念解决此问题。相关的内存区域。
从本质上讲,该函数必须定义它是否拥有该区域的所有权(在这种情况下,您可以将其传递给该函数,而不必关心它,但是OTOH必须以某种方式分配它该函数可以使用),或者仅“借用”指针。在这种情况下,它仍然是您的,该函数只是暂时使用它。
第三种选择是混合情况:该函数借用所有权,但是要求您保持存储器保持分配(即可用),直到发生某种动作(例如释放给定资源)为止。在这种情况下,您可以从中选择内存(堆,堆栈,静态内存等),但是您有责任保持足够长的可用性。
该函数的功能应在某处记录。