main() 함수가 실행되기 전에 프로그램이 중단됩니다. GDB에서main() 전에 크래시
int main(int argc, char **argv)
{
cerr << " MAAIN " << endl;
메시지 : 나는이 사용하는 "cerr"를 결정
나는 "삭제"및 "무료"기능에 대한 코드를 검사 한Reading symbols for shared libraries ...........+++............................ done
CA(34652) malloc: *** error for object 0x7fff76694860: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Program received signal SIGABRT, Aborted.
0x00007fff88e1782a in __kill()
(gdb) bt
#0 0x00007fff88e1782a in __kill()
#1 0x00007fff8c4d2a9c in abort()
#2 0x00007fff8c53184c in free()
#3 0x00000001026a1db0 in std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::overflow()
(gdb)
. 1. 어떤 가능한 문제가 될 수있다 :
if (x) delete x;
이 질문에 대답 좀 도와주십시오 모든 삭제는이 같은 검사와 함께 완료? 2. 찾는 방법? (나는 컴파일을 위해 많은 파일과 cmake를 가진 큰 코드를 가지고있다).
P. Is there any way a C/C++ program can crash before main()?을 읽었지만 gdb massage를 보면 라이브러리가 괜찮을 것이라고 생각합니다.
'if (x)'체크가 필요 없습니다. 아무것도 추가하지 않습니다. 'new'로 할당되지 않은 것을 삭제하고 있습니다. – juanchopanza
juanchopanza, 좋은 생각, 고마워. 하지만 왜 (x)가 아무 것도하지 않는다면? 포인터는 0 – klm123
으로 초기화됩니다. 왜냐하면 null 포인터에서'delete'를 호출하는 것이 no-op이기 때문입니다. – juanchopanza