저는 C++ 입문 과정에 있으며 제 프로그램은 복사 기능에서 segfaulting하고 있습니다. GDB를 사용할 때 위치 0x0에서 char *에 액세스 할 수 없다고 말합니다. 이상한 점은 오류없이 여러 번이 함수를 작성했다는 것입니다. ///////////////////Segfault가 char * strcpy를 시도했습니다 *
int question::set_question(char * question)
{
your_question = new char [strlen(question)+1];
strcpy(your_question, question);
}
이
class question
{
public:
question();
~question();
int set_question(char * question);
int copy_question(question & to_copy);
int clear_question();
int display();
char* retrieve_question();
char* retrieve_answer();
private:
char* your_question;
char* correct_answer;
};
는
프로그램 수신 신호 SIGSEGV GDB에서 에러 코드 , 세그멘테이션 오류. 는 [스레드로 전환 1 (LWP 1)] question.cpp에서 문제의 :: set_question 0x00013af8 (이 0x0으로, 질문 = 0x257a8는 "영화처럼을?"=) : 51
51 your_question = 새 char [strlen (question) +1];
(GDB) 페이지 나 strlen (질문)
$ 1 = 27
(GDB) 페이지 your_question
0x0 주소의 메모리를 액세스 할 수 없습니다