std :: string赋值时的分段错误

时间:2011-09-17 15:42:16

标签: c++ string memory

我有一个名为Sample的类,其中包含value类型的参数std::string。 有一个公共成员函数setValue(std::string tempdata),用于设置该成员的值。

void Sample::setValue( std::string tempdata ) { this->value= tempdata; }

从应用程序中我必须设置此参数的值。 我做了类似的事情:

std::string tempvalue = "Hello";
Sample s;
s.setValue( tempvalue );

当我运行应用程序时程序崩溃并通过gdb进行调试我得到:

#0  0x049da761 in __gnu_cxx::__exchange_and_add () from /usr/lib/libstdc++.so.6
#1  0x049c0e6e in std::string::assign () from /usr/lib/libstdc++.so.6
#2  0x049c0ed1 in std::string::operator= () from /usr/lib/libstdc++.so.6
#3  0x08075e9b in Sample::setValue (this=0x83779a8, tempdata=Cannot access memory at address 0xffffffff )

任何人都可以建议我应该如何调试此问题?

1 个答案:

答案 0 :(得分:2)

您展示的代码是正确的。所以错误是其他的。例如,它可能是某些早期的堆栈或堆损坏,直到这些代码行被执行才会被注意到。