int main() {
std::string str;
str.reserve(9999);
{
std::string s1("aaa");
std::string s2("bbb");
// can both strings s1, s2 be moved to str?
// for example str should be "aaabbb"
}
}
我的问题:是否有可能窃取s1
和s2
的记忆以形成s1
和s2
的连接字符串(因为它已经有足够的空间用于两者)?
答案 0 :(得分:1)
因为用于std::string
的内存必须是连续的,所以无法窃取两个独立字符串的内存。
从C ++ 14开始,第21.4.1 / 4节:
basic_string对象中的char类对象应连续存储。也就是说,任何
basic_string
对象s,标识&*(s.begin() + n) == &*s.begin() + n
应保留n的所有值,使得0 < = n< s.size()。