首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用struct的结构进行内存分配时出现分段错误

使用struct的结构进行内存分配时出现分段错误
EN

Stack Overflow用户
提问于 2019-01-10 02:29:56
回答 1查看 195关注 0票数 0

我对使用分配内存和指针还很陌生,

我的想法是尝试在结构中创建一个结构,以便在代码中使用它们,但是到目前为止,我得到了一个无法管理的分段错误。感谢您的帮助

代码语言:javascript
复制
#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;

}}

EN

回答 1

Stack Overflow用户

发布于 2019-01-10 03:51:22

seg错误的原因是因为您正在取消引用未初始化的指针blocks[i].meshmesh成员中的地址未知,因为malloc返回未初始化的内存(mesh从使用blockmalloc分配的内存中获取它的值),并且取消引用此类指针是未定义的行为。

引用C11,第7.22.3.5章,malloc函数:

函数malloc为一个对象分配空间,该对象的大小由size指定,值不确定。

引用C11,附件§J.2,未定义的行为:

malloc函数分配的对象的值为

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54116259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档