【发布时间】:2019-01-09 18:29:56
【问题描述】:
我很新,使用分配内存和指针,
我的想法是尝试在结构内部创建一个结构,以便在代码中使用它们,但是到目前为止,我得到了一个我无法管理的分段错误错误。 感谢您的帮助
#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;
} }
【问题讨论】:
-
blocks[i].mesh->x = &i8;已经覆盖了指向刚刚由calloc返回的内存分配的指针。目前尚不清楚您要通过分配仅用于一个double变量的内存来做什么。 -
我正在尝试分配变量。
-
试试
*blocks[i].mesh->x = i8; -
你还没有为
struct vect3d1 *mesh分配内存 -
你需要
mesh作为指针吗?如果可以满足您的目的,结构可以直接包含其他结构。有几个原因可能导致它不显示,但在提供的代码中没有一个是显而易见的。
标签: c struct segmentation-fault malloc calloc