0

一个与 mdb 相关的问题。

我遇到了一个核心转储,其中堆栈指向 RWCString 的赋值运算符。(Rogue-wave 字符串)这是 mdb 在 solaris 上打印的堆栈。

> ::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它显示了正在复制的确切字符串。所以这就是赋值运算符的右轴,地址之一可能是左轴。但是其他地址是什么,例如19f9f34, d8965909, ff1df0ac, fca59c39. .. ETC ?

4

0 回答 0