什么时候适合使用 C++ GUI 中的智能指针(带有主循环的程序)
我倾向于使用 std::tr1::shared_ptr 在我的 GUI 程序中自动管理指向实用程序类的指针。
基本上,这是程序的骨架:
int main () {
Allocate dynamic memory for utility class
GUI code.. GUI code... GUI Code..
GUI Main Loop
}
当用户调用 quit_cb 或调用 SIGINT (CTRL+C) 时,程序完成。在我的情况下,我需要能够在任何一种情况下调用删除。我可以在 quit_cb 中调用删除,但如果调用 SIGINT ...则永远不会调用删除!在这种情况下使用智能指针是否合适?
I am leaning towards using std::tr1::shared_ptr to automatically manage a pointer to a utility class in my GUI program.
Basically here's a skeleton of the program:
int main () {
Allocate dynamic memory for utility class
GUI code.. GUI code... GUI Code..
GUI Main Loop
}
The program finishes when the user calls a quit_cb or if SIGINT (CTRL+C) is called. In my situation, I need to be able to call delete in either case. I can call delete in quit_cb but if SIGINT is called ... then delete is never called! Is it appropriate to use a smart pointer in this case?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
即使在这种情况下,您也可以按下 Ctrl-C 并调用 quit_cb/delete。
如何捕获 ctrl-c 事件? (C++)
因此,无论退出情况如何,您始终都能得到保障。不需要自动指针或任何“智能”的东西。
You can catch the Ctrl-C as well and call quit_cb/delete even in that case.
How can I catch a ctrl-c event? (C++)
So no matter the exit case you are always covered. No need for an auto-pointer or anything "smart".