Вопрос, связанный с MDB.
Я столкнулся с дампом ядра, для которого стек указывает на оператор присваивания RWCString. (Жулик-волна)
Вот стопка, напечатанная mdb на солярисе.
> ::stack
libCstd.so.1`std::basic_string<char,std::char_traits<char>,std::allocator<char> >&std::basic_string<char,std::char_traits<char>,std::allocator<char>
>::operator=+0x118(19f9f34, f847b480, 45, 1908, 0, 19f9f34)
RWCString&RWCString::assign+0x18(19f9f34, f847b480, fb6e4950, 0, 201e8, 20)
RWCString&RWCString::operator=+0x18(19f9f34, f847b480, d8965909, ff1df0ac, ff1df0ac, fca59c39)
приведенный код представляет собой присвоение const char * для RWString, что-то вроде этого
const char * ch = "ABCD"RWCString str = ch;
Теперь мой вопрос: что это за дополнительный адрес в operator =, который отображается в стеке?
то есть в очереди
RWCString&RWCString::operator=+0x18(19f9f34, f847b480, d8965909, ff1df0ac, ff1df0ac, fca59c39)
когда я дам адрес f847b480
он показывает точную строку, которая копируется. так что это RHS оператора присваивания, один из адресов может быть LHS. но каковы эти другие адреса, как 19f9f34
, d8965909
, ff1df0ac
, fca59c39
, .. так далее ?
Задача ещё не решена.