c语言的malloc函数为什么会出现没有定义,屡次使用malloc函数为什么不行

在进行大型矩阵计算的程序中,由于静态数组容量不足,转而使用malloc动态分配内存。然而,在运行过程中,当连续多次调用malloc时,程序出现Segmentation fault (core dumped)。经过测试,发现连续几次malloc可以正常运行,但多次调用后会在某次malloc时崩溃。问题可能与内存泄漏、堆碎片或malloc内部管理有关。
摘要由CSDN通过智能技术生成

多次使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值