如何开辟很大的2维数组?

来源:百度知道 编辑:UC知道 时间:2024/06/06 08:18:26
printf("\n动态生成DataArray二维数组\n");
unsigned long temp = num_threshold+1;
DataArray = (unsigned long**) new unsigned long[sizeof(unsigned long*) * temp];
printf("\n动态生成DataArray二维数组-step1\n");

for ( i=0; i<temp; i++)
{
DataArray[i] = new unsigned long[sizeOfDataArray[i] * sizeof(unsigned long)];
printf("\n动态生成DataArray二维数组-step2\n");
for( j=0; j<sizeOfDataArray[i]; j++)
{
if(j==16000)
printf("\n%u\n",j);
DataArray[i][j] = 0;
}
}

sizeOfDataArray[i]的值都是16384,num_threshold的值是3。
不知道为什么,运行到i=3的时候,就会出错,进行数组最后一列的初始化了。
请大家帮忙~~
其实这两段代码的意思是一样的。只是开辟的声明方式不同。
同样感谢!

printf("\n动态生成DataArray二维数组\n");
unsigned long temp = num_threshold+1;
DataArray = new unsigned long * [temp];
printf("\n动态生成DataArray二维数组-step1\n");

for ( i=0; i<temp; i++)
{
DataArray[i] = new unsigned long[sizeOfDataArray[i]];
printf("\n动态生成DataArray二维数组-step2\n");
for( j=0; j<sizeOfDataArray[i]; j++)
{
if(j==16000)
printf("\n%u\n",j);
DataArray[i][j] = 0;
}
}