C- ncurses库的del_panel函数导致segfault



我有一个代码,该代码将面板中的一个函数分配给 new_panel ,并尝试用 del_panel 在另一个函数中对其进行处理。代码样本在下面

void medical_cards(int regid){ //work with patient's medical cards
/*...*/
PANEL *pmedcards[cards];
WINDOW *wmedcards[cards];
bind_windows(pmedcards, wmedcards, cards); 
//this function allocates panels
/*...*/
update_panels();
doupdate();
/*...*/
i = 0;
while (i < cards)
   del_panel(pmedcards[i++]); 
  /*here I get segfault with backtrace pointing 
  to wtouchln function of the ncurses library*/
i = 0;
while (i < cards)
    delwin(wmedcards[i++]);
return;
}
void bind_windows(PANEL **pmedcards, WINDOW **wmedcards, int cards){ 
int height = 15, width = 40, ypos = LINES - 20, xpos = COLS - 45;
int i = 0;
while (i < cards) {
    wmedcards[i] = newwin(height, width, ypos, xpos + i);
    box(wmedcards[i++], 0, 0);
}
i = 0;
while (i < cards) 
    pmedcards[i] = new_panel(wmedcards[i++]);
}

问题在于我在试图进行面板,调试器时会得到segfault指向 wtouchln 功能是麻烦的来源。似乎以前没有人遇到过这样的问题,而人页面的描述稀缺了 del_panel 函数,任何帮助都将不胜感激。我期望的是,del_panel将在释放资源并正常返回的情况下完成其工作,而不会导致程序崩溃。

pmedcards[i] = new_panel(wmedcards[i++]);

第一个我或I 是什么?这是ub。

这个问题与 ncurses 库无关,而不是分配导致不确定行为的新面板的愚蠢错误,正如指出的Michal Marszalek所指出的那样。问题解决了

最新更新