Netbeans 在我脱离阵列时不会出错



这是一个代码1的

    int j[2];
    int *ptr = j;
    for(int i=0;i<__INT_MAX__;++i){
        cout << i << endl;
        j[i]=0;
    }

在该代码中,它打印1 2 3 4 5 6 7,然后再次打印1 2 4 5 6。它不会造成分割错误。但是,当我将数组的地址分配给指针并写入ptr[I]而不是j[I]时,它会打印1 2 3 4 5 6,并给出分段错误。代码:

        int j[2];
        int *ptr = j;
        for(int i=0;i<__INT_MAX__;++i){
            cout << i << endl;
            ptr[i]=0;
        }

所以我认为Netbeans可以处理这种情况,但这对程序员来说是有害的。如何禁用它?还有其他类似的"保护措施"吗?

摘要编辑:它一定给我分段错误,但它不是。我想出错,这样我就可以修复我的代码了。Netbeans防止了该错误。

编辑2:此主题不重复。在那个话题中,他只尝试了一个地址。在我的代码中,有一个无限循环,它必须给seg错误

附加3:当我从堆中分配时,给出地址并放入循环的指针,I值接近30.000。但在第一个代码中,它增加到6-7,再次从0开始。正因为如此,我认为我的IDE可以防止seg故障。

访问您不拥有的内存(您在两个代码示例中都这样做)是未定义的行为。这意味着代码可以做任何它想做的事情;包括,就像它对Netbeans代码所做的那样,似乎可以正常工作。如果不改变编程语言,就没有办法"禁用"它。

相关内容

  • 没有找到相关文章

最新更新