C++11 字符串的分配要求
C++11 Allocation Requirement on Strings
我听说 C++11 需要string
在连续内存中分配。我什至以为我在上面看到了一个堆栈溢出问题,但我似乎找不到它。
我知道在实践中,gcc和Visual Studio确实连续分配string
,我只是问标准的要求。
2011 标准第 21.4.1.5 节规定:
应存储
basic_string
对象中的类似字符的对象 连续的。也就是说,对于任何basic_string
对象s
,恒等式&*(s.begin() + n) == &*s.begin() + n
应适用于n
这样0 <= n < s.size()
.
标识表达式的两个部分是
- 获取
begin()
迭代器,前进n
,然后取消引用并获取结果元素的地址。 - 获取
begin()
迭代器,取消引用并获取结果元素的地址。向此指针添加n
。
由于两者都要求相同,因此这将强制实施连续存储;也就是说,迭代器不能在不违反此要求的情况下移动任何不连续的存储。
相关文章:
- 用字符串的向量分配字符串向量
- 在C++中动态分配字符串数组
- 分配字符串uint8_t
- 如何分配字符串来提升野兽multi_buffer
- 分配字符串时EXCEPTION_ACCESS_VIOLATION
- 使用带有动态分配字符串的strcpy_s()和strcat_s()
- 如何分配字符串文本
- C 循环不重新分配字符串值
- 如何在C 中分配字符串数组
- 动态内存分配 C++ 字符串
- 如何存储可以分配字符串的数值
- 通过引用传递结构并分配字符串
- 动态分配字符串文字
- 分配字符串数组时出现分段错误
- 如何从 Arduino 的 C++ 类中的构造函数中分配字符串字段
- 动态分配 C 字符串内存,无需先询问用户输入时间
- 分配字符串时出现 char* 新建和删除 [] 错误
- C++正在记住指向已分配字符串的指针
- 在结构中分配字符串时出现 Seg 错误
- 指向字符串的指针,可用于动态分配字符串数组