gtk - 是否为使用“gtk_list_store_newv”创建的对象分配了“新”的内存
问题描述
我使用 GTK 创建带有按钮、列表等的 GUI。在某些类中,我有 GtkListStore* 类型的私有成员,我使用 'gtk_list_store_newv' 来初始化这些指针。函数 'gtk_list_store_newv' 创建新的 GtkListStore 并返回 GtkListStore*。GTK 文档说“返回一个新的 GtkListStore”。新创建对象的内存是用“new”运算符创建的吗?如果是这样,那么我是否应该使用“删除”显式释放,例如在自定义对象析构函数中?
class What {
public:
What();
~What();
private:
GtkListStore* whatWhat;
};
// this constructor uses 'gtk_list_store_newv' to initialize the member
What::What() {
// some variables to define input arguments for the function
whatWhat = gtk_list_store_newv(// the arguments here...);
}
// SHOULD THIS EXPLICIT DESTRUCTOR USE 'delete'
What::~What() {
delete whatWhat; // do I need this 'delete' to release memory
}
仅作记录,当我以这种方式使用“删除”时,不会发生崩溃,也不会出现任何警告。
解决方案
不,GtkListStore
是 的子类GObject
,并且 GObjects 是引用计数的。采用g_object_unref(whatWhat);
delete
可能对你有用,但这只是巧合。它会在某个地方崩溃。
推荐阅读
- typescript - 在 Typescript 中传递文件对象时出错
- python - {"Error":"Invalid JSON syntax at offset 2"} - 在尝试获取 everflow 报告时收到此错误
- iis - 无法在 IIS 8.5 中使用 URLRewrite 删除服务器标头详细信息
- java - 数组中最小元素的测试工具 - 主类方法
- powershell - 外壳 | 在特定模式后从 .txt 中删除行
- javascript - 使用谷歌图表和 PHP 显示 Y 轴标题和 X 轴标题的问题
- html - 带有图像的 SVG 链接 (HTML)
- clojure - Google BigQuery API 获取 Clojure 中非美国位置运行作业的状态
- python-3.x - requests.get(url).headers.get('content-disposition') 在 PYTHON 上返回 NONE
- sql - 如何按范围划分列?