【发布时间】:2019-07-07 15:14:12
【问题描述】:
我正在用 C++ 和 gtkmm 库编写一个小 GTK3 应用程序。
在 gtkmm 文档中,通常会使用一些具体实例,例如 Gtk::Application、Gtk::Builder、Gtk::StatusIcon 等。使用 create() 静态方法初始化,这些方法返回 Glib::RefPtr。同时子小部件通常只出现在堆栈上。
这对我来说不是很清楚:
- 是因为内存堆栈使用还是其他原因?目前我的代码中没有 RefPtr。我使用 valgrind 的 massif 工具检查了堆栈的使用情况,峰值使用量约为 100 KB。对我来说似乎不算太低,但相当大小的 example with RefPtr's 占用相同的堆栈内存。
- 我可以像
Application myapp那样将所有实例都放在堆栈上,还是应该在它存在时始终使用 create()? - 在这种情况下,指针提供了哪些优势?
【问题讨论】: