C 11字符串分配要求
作者:互联网
我听说C 11将要求在连续内存中分配字符串.我什至以为我看到了一个堆栈溢出问题,但似乎找不到.
我知道实际上gcc和Visual Studio都可以连续分配字符串,我只是在问标准的要求.
解决方法:
2011年标准的21.4.1.5节规定:
The char-like objects in a
basic_string
object shall be stored
contiguously. That is, for anybasic_string
objects
, the identity
&*(s.begin() + n) == &*s.begin() + n
shall hold for all values of
n
such that0 <= n < s.size()
.
身份表达的两个部分是
>使用begin()迭代器,前进n,然后取消引用并获取结果元素的地址.
>使用begin()迭代器,取消引用并获取结果元素的地址.将n添加到此指针.
由于要求两者相同,因此可以强制进行连续存储.也就是说,迭代器不能在不违反该要求的情况下在任何非连续存储上移动.
标签:c,c11,string,memory,standards 来源: https://codeday.me/bug/20191012/1896926.html