多次使用malloc函数为什么不行?
编了一个程序,
其中要用到很多很多数组来进行大型的矩阵计算(使用分治法递归实现,所以中间数据特别多)。
定义成静态数组已经不够用了(经测试只能支持到几百*几百的数组相乘)。
所以采用了malloc的形式,
但在运行的时候,却出现 Segmentation fault (core dumped)
经测试发现,如果我连续malloc两三次的话,程序是可以运行的,
一旦我连续malloc好多次,程序在运行的时候在某个malloc处就会出错而终止。尽管我测试的矩阵很小,不可能内存不够。
程序本身应该是没有问题的,因为若使用静态数组的话,一切正常。
这样的问题,可能是出在哪里呢?
void STRASSEN(arg)
struct thread_args *arg;
{
float **A12,**A21;
float **B12,**B21;
float **C11,**C12,**C21,**C22;
float **MM1,**MM2;
struct thread_args thread[7];
int i,j;
int n = arg->n;
int m = n/2;
if (n == TN) {
MATRIX_MULTIPLY(n,arg->A,arg->B,arg->C);
} else {
A12=(float **)malloc