Ошибка сегментации при назначении std :: string - PullRequest
2 голосов
/ 17 сентября 2011

У меня есть класс с именем 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 Ответ

2 голосов
/ 17 сентября 2011

Код, который вы показали, правильный. Так что ошибка в другом. Это может быть, например, повреждение стека или кучи в какой-то более ранней точке, которая просто не замечается, пока не будут выполнены эти строки кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...