经过我的测试:
int **a;
while(1)
{
    a  = new int*[1000];
    for(int i = 0; i < 1000; i++){
        a[i] = new int[1000];
        memset(a[i],0,sizeof(int)*1000);}
    for(int i = 0; i < 1000; i++)
        delete a[i];
    delete a;
}while(1)
{
    a = new int*[1000];
    memset(a,0,sizeof(int)*1000);
    delete a;
}第一种分配方式占用CPU资源非常的多,而第二种则要小非常多,这是为什么的?
当然我实际中测试的程序并不是这种死循环,但是为了简单表述,只是这样示意下;
请问各位大牛,为什么动态的分配二维数组并初始化会比动态分配以为数组多占用这么多的cpu资源的?
 

解决方案 »

  1.   

    new一个大数组要比new 100个小数组多循环99次嘛。
      

  2.   

    相当于:
    int a;
    for(int i = 0; i < 1000; i++)
    {
    a=0;
    }和
    int a=0;
    ___________________________
    一个馒头1000口吃和1口吃
      

  3.   

    int** a;
    while(1)
    {
        a  = new int*[1000];
        for(int i = 0; i < 1000; i++){
            a[i] = new int[1000];
            memset(a[i],0,sizeof(int)*1000);}
        for(int i = 0; i < 1000; i++)
            delete a[i];
        delete a;
    }int* a;
    while(1)
    {
        a = new int[1000];
        memset(a,0,sizeof(int)*1000);
        delete a;
    }现在改正过来了。
      

  4.   

    int** a
    while(1)
    {
        a  = new int*[1000];
        for(int i = 0; i < 1000; i++){
            a[i] = new int[1000];
            memset(a[i],0,sizeof(int)*1000);}
        for(int i = 0; i < 1000; i++)
            delete a[i];
        delete a;
    }
    int* a
    while(1)
    {
        a = new int[1000];
        memset(a,0,sizeof(int)*1000);
        delete a;
    }