我使用分配内存和指针还很新,
我的想法是尝试在结构内部创建结构以便在代码中使用它们,但是到目前为止,我获得了我无法管理的分段错误。 谢谢您的帮助
#include <stdio.h>
#include <stdlib.h>
int main()
{
int nb;
double i8,i9,i10;
struct vect3d1
{
double *x,*y,*z;
};
struct block
{
int ibl;
int i,j,k;
struct vect3d1 *mesh;
};
struct block *blocks;
i8=8.0;
nb=2;
blocks=(struct block *)malloc(nb*sizeof(struct block));
for(int i=0;i<nb;i++){
blocks[i].ibl=i;
blocks[i].mesh->x = calloc(1,sizeof(double));
blocks[i].mesh->x = &i8;
} }
答案 0 :(得分:1)
段错误的原因是因为您取消引用未初始化的指针blocks[i].mesh
。 mesh
成员中的地址是未知的,因为malloc
返回未初始化的内存(mesh
是从使用malloc
的{{1}}分配的内存中得到的值)并取消引用指针是未定义的行为。
引用C11,第7.22.3.5节,malloc函数:
malloc函数为大小为的对象分配空间 由大小指定并且其值不确定。
引用C11,附件§J.2,未定义的行为:
使用了malloc函数分配的对象的值