注册 登录
编程论坛 C++教室

数组界限溢出问题 array bounds overflow

niu91 发布于 2011-05-14 18:49, 4635 次点击
程序代码:
#include<iostream>
using namespace std;
const char outstr[11][2]={"","","","","","","","","","",""};//十一个2字节的字符
int main()
{
    cout<<strlen("")<<endl;;
    cout<<outstr[0][0]<<endl;
    return 0;

}
程序为什么会出现 数组溢出的问题,把 outstr[11][2]改成 outstr[11][3]或 outstr[11][4]则不报错  十一个2字节的字符数组存在 outstr[11][2]为什么会溢出呢?


[ 本帖最后由 niu91 于 2011-5-14 18:50 编辑 ]
3 回复
#2
buffer2011-05-14 20:06
编译器会在字符串尾部加上'\0'标志其结束。
#3
niu912011-05-14 20:28
回复 2楼 buffer
cout<<strlen("┌")<<endl;的结果是2呀
#4
buffer2011-05-14 21:13
回复 3楼 niu91
strlen计算的是从字符串开始到结束字符'\0'之间的字符数。
比如:strlen("abc\0defg") 的结果是3,因为函数遇到c后面的结束字符\0后就认为字符串结束了。
1