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

为什么没报错 数组越界的时候

coderlee 发布于 2008-01-21 11:05, 2228 次点击
int _tmain(int argc, _TCHAR* argv[])
{
    char* str = new char[2];
    cin >> str; //input 4 char
    cout << str;

    return 0;
}

我只给str了2个char的空间 却能输入4个char 为什么呢
8 回复
#2
中学者2008-01-21 11:13
你没异常捕获是不报错滴~~~要不然编程的时候就不用去注意越界了~
#3
忘记喧嚣2008-01-21 12:59
char* str = new char[2];

老大这个是动态分配数组....你定义了2个大小只是开始的情况

new会在内存开辟一块内存用与存储你的数组...不相信你加 求你这个数组

现在的大小 得到的肯定是4 或者输出看是多少.
#4
linsua2008-01-21 13:02
你们俩的头像是样的,哪里来的?
#5
leeco2008-01-21 15:23
原帖由 [bold][underline]忘记喧嚣[/underline][/bold] 于 2008-1-21 12:59 发表 [url=http://bbs.bccn.net/redirect.php?goto=findpost&pid=1185052&ptid=198170][/url]
char* str = new char[2];

老大这个是动态分配数组....你定义了2个大小只是开始的情况

new会在内存开辟一块内存用与存储你的数组...不相信你加 求你这个数组

现在的大小 得到的肯定是4 或者输出看是多少. ...

误人子弟
#6
dhj19852008-03-18 09:43
程序在编译时只有 程序中的语法和词法出错才会报错
数组越界 只会在代码生成的时候会报错
#7
sunkaidong2008-03-18 15:55
在java里面不捕捉也会送到控制台..c++是要捕捉错误才可以的
#8
小烟2008-03-18 18:33
数组编程设定了个数,哈哈
#9
baoyibao2008-03-18 22:46
char *str = new char[2];
只是使char指针str指向一个2字节的内存空间,但是不代表它不能指向另外的内存空间,因为它只是一个char指针,没有别的限制。所以,不论输入多少字符都可以正确地显示。
1