我正在上 C++ 入门课程,我的程序在我的复制功能中出现了段错误。当我使用 GDB 时,它说它无法访问位置 0x0 的 char *。奇怪的是,我之前已经多次编写过这个函数,没有任何错误。
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;
};
//////////////////
int question::set_question(char * question)
{
your_question = new char [strlen(question)+1];
strcpy(your_question, question);
}
这是 GDB 中的错误代码
程序收到信号 SIGSEGV,分段错误。[切换到线程 1 (LWP 1)] 0x00013af8 in question::set_question (this=0x0, question=0x257a8 "do you like movies??") at question.cpp:51
51 your_question = 新字符 [strlen(question)+1];
(gdb) p strlen(问题)
$1 = 27
(gdb) p your_question
无法访问地址 0x0 处的内存