gpt4 book ai didi

c - malloc 导致 SIGSEGV :Segmentation fault

转载 作者:太空狗 更新时间:2023-10-29 16:09:35 26 4
gpt4 key购买 nike

typedef struct Matrix
{
double * matrix;
int sizex;
int sizey;
}Matrix;

int nn = 257;
Matrix * g = (Matrix *)malloc(sizeof(Matrix *));
g->matrix = malloc(sizeof(double) * nn * nn);
g->sizex = nn;
g->sizey = nn;

这段代码在到达 g->matrix = malloc(sizeof(double) * nn * nn); 时出错有人发现它有问题吗?

编辑:发现在显示分配之前访问未分配内存的问题,它导致 SIGSEGV:段错误。

最佳答案

您需要将 malloc Matrix 的大小传递给 Matrix,而不是 sizeof pointer

改变

Matrix * g = (Matrix *)malloc(sizeof(Matrix *));
^^

Matrix * g = (Matrix *)malloc(sizeof(Matrix));

此外,您必须始终检查malloc 的返回值并确保在您使用分配的内存之前分配成功。

关于c - malloc 导致 SIGSEGV :Segmentation fault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4468570/

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