zoukankan      html  css  js  c++  java
  • vs的数组重叠了???(其实是数组越界了)

    用visual studio 2017 ,在打素数表时莫名发现另外一个数组被赋值了,搞了好久才明白是数组a最后一个元素 竟然和数组cnt第一个元素共用一个内存 ??? 

    或许是bug或是处于什么目的吧,不过我在 vc++,和 dev c++ 测试了一下都没有这个问题。

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define N (int)10
    int a[N];
    int cnt[N];
    int main(void)
    {
        printf("%d
    ", cnt[0]);
        a[0] = 1, a[1] = 1;
        for (int i = 2; i*i <= N; i++)
        {
            if (cnt[0] == 1)
            {
                printf("什么鬼 %d
    ", i);
            }
            if (a[i] == 0)
            {
                for (int j = i*i; j <= N; j += i)
                {
                    if (a[j] == 0)
                        a[j] = 1;
                }
            }
        }
        printf("%p %p %p %p
    ", a, a[N], cnt, cnt[0]);
        
        system("pause");
        return 0;
    }

     

        可以看到他们的地址确实重复了。就这样吧,好坑啊!

    几天后,

    好吧,前面的都说错了,原来是数组越界了。现在才想到,好菜啊我!!

    关键是之前越界vs都会报错的,这个竟然没报错。

    哎,搞了半天发现是自己的锅  ---> ---->

    现在估计是vs把两个数组内存放一起,越界了就没有报错了。

  • 相关阅读:
    【HDU2050】折线分割平面
    【Codevs1183】泥泞的道路
    Pair
    【Poj 1832】连环锁
    【Poj1090】Chain
    【UVa 10881】Piotr's Ants
    【Codeforces】665E Beautiful Subarrays
    【T^T】【周赛】第一周周赛——欢迎16级的新同学
    【OI新闻】2016.10.09
    二分图的最大匹配
  • 原文地址:https://www.cnblogs.com/asdfknjhu/p/12128849.html
Copyright © 2011-2022 走看看