Ето функция из menu.c
Код: Выделить всё
WINDOW **draw_menu(int menu_num){
int i;
WINDOW **menu;
menu_s *menues;
menues[0].height = 7;
menues[0].width = 10;
menues[0].starty = 1;
menues[0].startx = 0;
menues[0].items_num = 5;
menues[0].menu_items [0] = "New";
menues[0].menu_items [1] = "Open";
menues[0].menu_items [2] = "Save";
menues[0].menu_items [3] = "--------";
menues[0].menu_items [4] = "Exit";
menues[1].height = 12;
menues[1].width = 10;
menues[1].starty = 1;
menues[1].startx = 5;
menues[1].items_num = 10;
menues[1].menu_items [0] = "Undo";
menues[1].menu_items [1] = "Redo";
menues[1].menu_items [2] = "--------";
menues[1].menu_items [3] = "Cut";
menues[1].menu_items [4] = "Copy";
menues[1].menu_items [5] = "Paste";
menues[1].menu_items [6] = "Delete";
menues[1].menu_items [7] = "--------";
menues[1].menu_items [8]= "Search";
menues[1].menu_items [9]= "Replace";
menues[2].height = 4;
menues[2].width = 15;
menues[2].starty = 1;
menues[2].startx = 10;
menues[2].items_num = 2;
menues[2].menu_items [0] = "Run";
menues[2].menu_items [1] = "Spellcheck";
menu=(WINDOW **)malloc((menues[menu_num].items_num+4)*sizeof(WINDOW *));
move(menues[menu_num].starty,menues[menu_num].startx);
menu[0] = newwin(menues[menu_num].height,menues[menu_num].width,menues[menu_num].starty,menues[menu_num].startx);
wbkgd(menu[0],COLOR_PAIR(1));
box(menu[0],ACS_VLINE,ACS_HLINE);
for (i=1;i<menues[menu_num].items_num+1;i++) {
menu[i]=subwin(menu[0],1,menues[menu_num].width-2,menues[menu_num].starty+i,menues[menu_num].startx+1);
}
for (i=1;i<menues[menu_num].items_num+1;i++) {
wprintw(menu[i],menues[menu_num].menu_items [i-1],i);
}
wbkgd(menu[1],COLOR_PAIR(2));
for (i=2;i<menues[menu_num].items_num+1;i++) {
wbkgd(menu[i],COLOR_PAIR(0));
}
wbkgd(menu[5],COLOR_PAIR(0));
wrefresh(menu[0]);
return menu;
}А здесь определен тип menu_s или _menu_struct из menu.h
Код: Выделить всё
typedef struct _menu_struct {
char *menu_items[20];
int items_num;
int height;
int width;
int starty;
int startx;
} menu_s;..В етой функции(gdb так сказал) прога выдает segfault....а я не врубаюсь почему... может с указателями чет напортачил... Кароч, может ктонить сказать в чем здесь ошибка? Или подскажите как заюзать gdb или ченить другое чтобы найти самому ошибку...