2009-11-15 2 views
0

나는 때때로 다음과 같은 일을하는 ncurses 앱을 가지고있다.ncurses에서 double-free가 가능한 원인은 무엇입니까?

malloc: *** error for object 0x100300400: double free 
Program received signal SIGABRT, Aborted 
(gdb) where 
#0 0x00007fff846a7426 in read() 
#1 0x00007fff83f3d775 in _nc_wgetch() 
#2 0x00007fff83f3de3f in wgetch() 
(and so on into my code) 

누구든지 추구 할 가능성이있는 제안이 있습니까?

+0

일부 코드 게시는 어떻습니까? – Gonzalo

+0

코드는 단순히 wgetch (stdscr) 호출입니다. wgetch가 중단 될 수있는 이유에 대해 자세히 알아보십시오. –

답변

2

Linux 시스템에서 glibc를 사용하고있는 것처럼 보입니다.

Linux/x86_64의 모든 종류의 힙 손상에 사용하는 도구는 Valgrind입니다. 그것은 단지 당신에게 답을 줄 것이므로 문제가 어디 있는지 추측 할 필요가 없습니다. (어디 에나 일 수 있습니다).

+0

glibc, Darwin, 10.6 그래서 valgrind는 의문의 여지가 없습니다. 그런 다음 다시 우분투를 가지고 테이블에 다시 valgrind를 집어 넣습니다. 감사. –

관련 문제