经过我的测试:
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资源的?
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资源的?
int a;
for(int i = 0; i < 1000; i++)
{
a=0;
}和
int a=0;
___________________________
一个馒头1000口吃和1口吃
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;
}现在改正过来了。
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;
}