为什么不能多次使用malloc函数?
编写了程序
其中用许多数组进行大规模矩阵计算(由于采用分割统治法递归实现,中间数据特别多)。
不足以定义为静态数组(测试仅支持数百*数百个数组的乘法运算)。
所以采取malloc的形式,
但是,在运行时,会出现分段故障(core dumped )
测试结果表明,如果我坚持两三次malloc,程序就可以运行了。
如果我多次继续malloc,程序就会在运行中的malloc上出错并退出。 尽管我测试的矩阵很小,但内存并不不够。
程序本身应该没有问题。 因为如果使用静态数组,一切都很正常。
这样的问题,可能是从哪里出来的?
语音风暴(arg )。
structthread_args*arg;
{
浮动**A21,**A21;
float**B12,**B21;
float**C11、**C12、**C21、**C22;
float**MM1,**MM2;
structthread_argsthread[7];
inti,j;
intn=arg-n;
intm=n/2;
if(n==TN ) {
矩阵_多重(n,arg-A,arg-B,arg-C );
}else{
a12=(float** ) malloc ) m*sizeof ) float* );
a21=(float** ) malloc ) m*sizeof ) float* );
B12=(float** ) malloc ) m*sizeof ) float* );
B21=(float** ) malloc ) m*sizeof ) float* );
C11=(float** ) malloc ) m*sizeof ) float* );
C12=(float** ) malloc ) m*sizeof ) float* );
C21=(float** ) malloc ) m*sizeof ) float* );
C22=(float** ) malloc ) m*sizeof ) float* );
m1=(float** ) malloc ) m*sizeof ) float* );
m2=(float** ) malloc ) m*sizeof ) float* );
if (空值==a12||空值==a21||空值==B12||空值==b21 ) {
_error(err_mem;
}
if (null==c11|| null==c12|| null==c21|| null==c22|| null==mm1|| null==mm2 ) {
_error(err_mem;
}
for(I=0; I
a12[I]=(float* ) malloc (m * sizeof ) float );