以下代码编译通过,而且运行正常
数组已经大大的越界,为何不出错??
编译环境vc6.0#include "stdafx.h"
#include <iostream>
using namespace std;int main(int argc, char* argv[])
{
int a[5];
for(int i = 0; i < 1000; i++)
{
a[i] = i;
cout << "a = " << a[i] << endl;
}
return 0;
}

解决方案 »

  1.   

    可能这一大片内存都是你这个进程的,并且都是空白的没有被其他重要结构占用的,并且,
    是可读的可写的。============================================================================
    http://www.betajin.com/alphasun/index.htm
    http://alphasun.18en.com/                    http://shakingtoolkit.9126.com/
    DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析
      

  2.   

    好像不同的机子结果不一样,我在另一台机子上运行只能打印到36如果你把int a[5]声明为全局变量的话,只能打印到6
      

  3.   

    to:alphapaopao(炮炮) 
    你的解释很有道理!但是你是如何看待经常出现的指针越界这种错误?
    也就是vc题是的不能读或写这种错误呢?我想出现这种错误的时候指针指向的
    地址肯定也是在这个程序的内存空间里!
    谢谢指教!!
      

  4.   

    看看有没有出现异常?在VC下按F5调试,在debug菜单选择exceptions,在弹出对话矿中选择C000008C Array Bound Exceeded,再选择stop always看看我没有测试,但是我觉得VC应该是能捕捉到这种异常,但是通常它自行处理了,直到不能处理时候才会有一个Unhandle exception使得程序崩溃
      

  5.   

    我也想知道原因.我也暂时同意alphapaopao(炮炮) 的理由.Debug模式分配给程序的内存太多,这是为了调试的需要。
    改成release模式编译后,能打印出多少?我想可能运行不了了。
    在我的机器上面试不了了。