gpt4 book ai didi

c - delwin(stdscr) 合法吗?

转载 作者:行者123 更新时间:2023-12-05 04:50:54 24 4
gpt4 key购买 nike

如果它是合法的,我应该在退出 ncurses 时总是调用它吗?还是 endwin() 自动调用? delwin(stdscr) 的后果是什么?

最佳答案

这是多个问题:

  • If it is legal, should I call this always when exiting from ncurses?
  • Or is it automatically called from endwin()?
  • What are the consequences of doing delwin(stdscr)?

前两个是等价的(它在 curses 的任何实现中都不是必需的,而不是 endwin 做的事情)。那么就称之为两个问题。第一个问如何 delwin endwin 相关,另一个询问的具体行为 delwin 。后者很有趣。

实际上它可能依赖于实现。

将其限制为 ncurses(每个标签),

  • delwin 电话
  • _nc_freewin , 这叫
  • remove_window_from_screen ,它对每个 curscr 进行特殊检查, newscr stdscr (如果要删除的窗口恰好匹配,则在释放它们各自的数据之前,将这些全局变量的值设置为 NULL)。

所以它适用于 ncurses。我在 December 1996 中添加了该功能:

    + modify _nc_freewin() to reset globals curscr/newscr/stdscr when
freeing the corresponding WINDOW (found using Purify).

关于便携性:

有两个问题。其他方面 endwin 。这永远不会删除窗口,因为总是可以跟随对 endwin 的调用。 调用 wrefresh 。它在 manual page 中:

   Calling refresh(3x) or doupdate(3x) after a temporary escape causes the
program to resume visual mode.

但是,如果你做了一个 delwin(stdscr) endwin() 之间wrefresh(stdscr)调用,ncurses 将为后者返回一个错误。 NetBSD(read the code 以查看它将取消引用空指针)和 Solaris 都将转储核心。

关于c - delwin(stdscr) 合法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67166629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com