| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4635 人关注过本帖
标题:数组界限溢出问题 array bounds overflow
只看楼主 加入收藏
niu91
Rank: 2
等 级:论坛游民
帖 子:64
专家分:44
注 册:2009-7-25
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:3 
数组界限溢出问题 array bounds overflow
程序代码:
#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 编辑 ]
搜索更多相关主题的帖子: 问题 
2011-05-14 18:49
buffer
Rank: 5Rank: 5
等 级:职业侠客
帖 子:73
专家分:326
注 册:2010-12-31
收藏
得分:20 
编译器会在字符串尾部加上'\0'标志其结束。
2011-05-14 20:06
niu91
Rank: 2
等 级:论坛游民
帖 子:64
专家分:44
注 册:2009-7-25
收藏
得分:0 
回复 2楼 buffer
cout<<strlen("┌")<<endl;的结果是2呀
2011-05-14 20:28
buffer
Rank: 5Rank: 5
等 级:职业侠客
帖 子:73
专家分:326
注 册:2010-12-31
收藏
得分:0 
回复 3楼 niu91
strlen计算的是从字符串开始到结束字符'\0'之间的字符数。
比如:strlen("abc\0defg") 的结果是3,因为函数遇到c后面的结束字符\0后就认为字符串结束了。
2011-05-14 21:13
快速回复:数组界限溢出问题 array bounds overflow
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018564 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved