printw()
이 세그멘테이션 오류를 일으키는 이유가 있습니까?리눅스, C, ncurses : printw로 인한 seg 오류
코드가 없어도 괜찮습니다. 그것으로 부서졌다. 난해한 일을하는 것처럼 보이지 않으므로, 여기서 잘못된 점을 이해하는 방법조차 모릅니다.
미리 조언 해 주셔서 감사합니다.
#include <ncurses.h>
...
initscr();
noecho();
cbreak();
...
void draw_court()
{
move(TOP_ROW-1, LEFT_COL+4);
printw("LIVES REMAINING: 3");
int i;
for (i = 0; i < RIGHT_COL; i++)
mvaddch(TOP_ROW, LEFT_COL+i, H_LINE);
for (i = 1; i < BOT_ROW-TOP_ROW; i++)
mvaddch(TOP_ROW+i, LEFT_COL, V_LINE);
for (i = 0; i < RIGHT_COL; i++)
mvaddch(BOT_ROW, LEFT_COL+i, H_LINE);
}
ETA : GDB에서 스택 트레이스가 :
#0 0xb778a139 in _nc_printf_string() from /lib/libncurses.so.5
#1 0xb7785e04 in vwprintw() from /lib/libncurses.so.5
#2 0xb7785f63 in printw() from /lib/libncruses.so.5
#3 0x08048f23 in draw_court()
#4 0x080489f4 in set_up()
#5 0x0804890a in main()
'TOP_ROW-1'은 올바른 계산인가, 아니면 'TOP_ROW + 1'이어야합니까? 나는 한계 밖의 오류를 생각하고있다. –
'TOP_ROW'는 실제로 5로 정의됩니다 - 죄송합니다. 조금 혼란 스럽습니다. –
나는 valgrind에서 메모리 오류를 검사하기 위해 프로그램을 실행하려고합니다. –