什么时候适合使用 C++ GUI 中的智能指针(带有主循环的程序)

发布于 2024-09-12 04:20:18 字数 364 浏览 4 评论 0原文

我倾向于使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蛮可爱 2024-09-19 04:20:18

即使在这种情况下,您也可以按下 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".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文