其他分享
首页 > 其他分享> > C 11字符串分配要求

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 any basic_string object s, the identity
&*(s.begin() + n) == &*s.begin() + n shall hold for all values of
n such that 0 <= n < s.size().

身份表达的两个部分是

>使用begin()迭代器,前进n,然后取消引用并获取结果元素的地址.
>使用begin()迭代器,取消引用并获取结果元素的地址.将n添加到此指针.

由于要求两者相同,因此可以强制进行连续存储.也就是说,迭代器不能在不违反该要求的情况下在任何非连续存储上移动.

标签:c,c11,string,memory,standards
来源: https://codeday.me/bug/20191012/1896926.html