《关于memset导致的MLE》

今天做了一个题,一直MLE,然后不断压缩数组,最后还是没过,上网搜到别人的题解和我一样的数组大小都能过。

这是两个代码对比

Code1:(AC)

void init()
{
    for(int i = 0;i <= k;++i)
    {
        tag[i] = 0;
        for(int j = 0;j < 10;++j) tree[i][j] = 0;
    }
    k = 0,f = 0;
}

Code2:(MLE)

void init()
{
    k = 0,f = 0;
    memset(tree,0,sizeof(tree));
    memset(tag,0,sizeof(tag));
    k = 0,f = 0;
}

百度了一下才发现:

对于全局变量的处理,如果不初始化,那么它一开始占的内存会比初始化了的全局变量小非常多。

我这里一开始就对一个比较大的数组用memset进行了初始化,导致了全局变量占用了很多的内存。

其实只需要for循环遍历已用的空间即可。(又涨知识了..)

 

posted @ 2020-07-30 10:15  levill  阅读(233)  评论(0编辑  收藏  举报