gpt4 book ai didi

使用 gcc 编译时关闭程序

转载 作者:行者123 更新时间:2023-11-30 21:27:26 29 4
gpt4 key购买 nike

我有一个乘法矩阵的程序。

for(y=0; y<1; y++) {
for(sy=0; sy<ni; sy++){
ia = (int *)malloc(sizeof(int)*N*N);
ib = (int *)malloc(sizeof(int)*N*N);
ic = (int *)malloc(sizeof(int)*N*N);
random_bil_integer(ia, ib, ic, psize);
for(i=0; i<psize; i++)
for(j=0; j<psize; j++)
for(k=0; k<psize; k++)
ic[i*psize+k] += (ia[i*psize+j] * ib[j*psize+k]);
free(ia); free(ib); free(ic);
}
for(py=0; py<nf; py++){
fa = (float *)malloc(sizeof(float)*N*N);
fb = (float *)malloc(sizeof(float)*N*N);
fc = (float *)malloc(sizeof(float)*N*N);
random_bil_float(fa, fb, fc, psize);
for(i=0; i<psize; i++)
for(j=0; j<psize; j++)
for(k=0; k<psize; k++)
fc[i*psize+k] += (fa[i*psize+j] * fb[j*psize+k]);
free(fa); free(fb); free(fc);
}
}

当我用 gcc 编译它并运行输出时,程序已强制关闭。

谁能帮我解决这个问题。

最佳答案

您的动态分配的数组不够大。例如,ic 的大小为 psize

ic = (int *)malloc(sizeof(int)*psize);

但是

ic[i*psize+k] += ...

i*psize+k 大于 psize

我想你需要

ic = (int *)malloc(sizeof(int)*psize*psize);

等等等等

您还遇到了未初始化数据的问题。您假设所有数据都初始化为零,但事实并非如此。

关于使用 gcc 编译时关闭程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51442049/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com