动态数组,内存不足的问题,高手指点一二!!!(困扰我很久了)
如下程序所示.
开辟动态数组时被告知系统内存不足,然后cpu100%
请问如何解决?
其中这里的m是函数传回的值,为1776。
运行时,执行到data_change =new int[m]时
出现内存不足.不能够开辟动态数组,究竟何因???
in_out[] 是一个1776行,40列的数组
void CCalculate::simp22(int in_out[], int m, int n, int input[], int *no_zero)
{
int i,j,k,l,r;
int k1,k2,k3;
int *data_change;
data_change=(int*)malloc(m*sizeof(int));
for(i=0; i<=m-1 ; i++)
{
//
data_change[i]=0;
}
for(i=0;i<=m-1;i++)
{
k1=0;
for(j=0;j<=n-1;j++)
{
if(in_out[i*n+j]!=0)
k1=k1+1;
}
data_change[i]=k1;
}
k1=0;
for(i=0;i<=m-1;i++)
{
if(data_change[i]==0)k1=k1+1;
}
*no_zero=m-k1;
k2=0;
for(i=0;i<=m-1;i++)
for(j=i+1;j<=m-1;j++)
{
k1=0;
for(r=0;r<=n-1;r++)
{
if(in_out[i*n+r]!=0)
{
k3=0;
for(k=0;k<=n-1;k++)
if((in_out[i*n+r]==in_out[j*n+k])&&(k3==0))
{k1=k1+1;k3=1;}
}
}
if((k1!=0)&&(data_change[i]==k1)&&(data_change[j]==k1))
{
for(l=0;l<=n-1;l++)
in_out[j*n+1]=0;
k2=k2+1;
input[j]=2;
}
}
*no_zero=*no_zero-k2;
free(data_change);
}