[英]Program received signal SIGSEGV, Segmentation fault
好的......我正在扯掉我的头发......当我将一个名为“name”的字符串传递给内容“joel”时,为什么会出现分段错误
void person::setName(string newName)
{
personName = newName;
}
Header 文件:
class person {
public:
int getID();
string getName();
void setID(int newID);
void setName(string newName);
private:
int personID;
string personName;
};
顺便说一句... function 电话是由一个孩子来的,尽管我不明白这会如何导致问题。
如果您使用的是 Linux,请尝试运行valgrind 。 您只需使用-g
(使用 gcc)进行编译,然后在前面使用valgrind
运行您的程序:
$ valgrind myprogram
与 GCC 解决方案不同,后者会告诉您何时发生段错误,而 valgrind 通常会准确地告诉您第一次 memory 损坏发生的时间,因此您可以更接近问题的根源。
PS。 它与“flint”押韵,而不是“find”。
可能,您正在取消引用流氓指针。 通过纯粹的猜测,你有没有这样的东西,也许:
Person persons[10];
for (i=1; i<=10; i++)
persons[i].setName("joel");
问题可能是:
for (i=0; i<10; i++)
实际上可能有数百个其他原因,但由于我没有你的代码,这是我试图猜测最合理的错误;)
(自我注意:我为什么要这样做/我不是通灵者? )
除了您一直在复制字符串这一事实之外,该代码看起来还不错。 代替
void setName(string newName);
应该
void setName(const string& newName);
问题必须在方法调用中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.