std :: string.append的使用导致“变量'结果'周围的堆栈已损坏”

时间:2010-03-24 03:57:17

标签: c++

我有以下代码:

std::string Utils::get() {
    std::string result;
    result.append(1, 'x');
    result.append(1, 'x');
    result.append(1, 'x');
    return result;
}

我希望返回'xxx'。

但是,当我在调试模式下运行时,我收到警告

“变量'结果'周围的堆栈已损坏”

我是否以错误的方式使用追加功能?

1 个答案:

答案 0 :(得分:2)

您对append的使用是正确的。其他东西(可能在调用函数之前等)正在破坏堆栈。只有当你再使用堆栈时(在这种情况下是一个函数调用)才能检测到它。

你不会在Release中看到它的原因是因为函数调用(可能)是内联的。因此,堆栈不像现在那样被操纵,结果是不同的。发布更多上下文,我们会帮助您追踪它。