我有以下代码:
std::string Utils::get() {
std::string result;
result.append(1, 'x');
result.append(1, 'x');
result.append(1, 'x');
return result;
}
我希望返回'xxx'。
但是,当我在调试模式下运行时,我收到警告
“变量'结果'周围的堆栈已损坏”
我是否以错误的方式使用追加功能?
答案 0 :(得分:2)
您对append
的使用是正确的。其他东西(可能在调用函数之前等)正在破坏堆栈。只有当你再使用堆栈时(在这种情况下是一个函数调用)才能检测到它。
你不会在Release中看到它的原因是因为函数调用(可能)是内联的。因此,堆栈不像现在那样被操纵,结果是不同的。发布更多上下文,我们会帮助您追踪它。