C++的string类为什么会有溢出的运行异常

图片说明
用VS2010写C++的string类,最后一位不是\0嘛,为什么说我溢出了,该怎么改啊?
求大神指点!

这个不是溢出,而是下标越界。vs高版本使用了unicode存储string,不能用'\0'判断。

一个是具体实现 加了\0
但是string自己有做检测 它只有0-3的索引 所以你访问4,内部assert报错了。