我对使用分配内存和指针还很陌生,
我的想法是尝试在结构中创建一个结构,以便在代码中使用它们,但是到目前为止,我得到了一个无法管理的分段错误。感谢您的帮助
#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;}}
发布于 2019-01-10 03:51:22
seg错误的原因是因为您正在取消引用未初始化的指针blocks[i].mesh。mesh成员中的地址未知,因为malloc返回未初始化的内存(mesh从使用block的malloc分配的内存中获取它的值),并且取消引用此类指针是未定义的行为。
引用C11,第7.22.3.5章,malloc函数:
函数malloc为一个对象分配空间,该对象的大小由size指定,值不确定。
引用C11,附件§J.2,未定义的行为:
malloc函数分配的对象的值为
https://stackoverflow.com/questions/54116259
复制相似问题