小编Jon*_*Jon的帖子

为struct分配内存

我有一个关于为c中的结构分配内存的一个相当简单的问题,我试过在网上看,但我找不到任何东西.结构定义为:

typedef struct cblock_ {
....
} cblock, *Cblock;
Run Code Online (Sandbox Code Playgroud)

分配内存时,我试过了

Cblock new_block = malloc(sizeof(struct cblock_));
Run Code Online (Sandbox Code Playgroud)

但是,我不断收到内存损坏错误.我已经尝试将sizeof的参数更改为不同的东西,但一切都得到了相同的内存损坏错误.我究竟做错了什么?

****编辑****

因此在运行valgrind之后,我在代码中得到了相当多的"无效写入大小4"或"无效读取大小4".

发布所有内容可能太多了,但这里有一个地方,其中valgrinds给我一个"4号无效写入"

static Ablock agroup_main;    

typedef struct ablock_ {
    int length;
    int num;
    ...
} ablock, *Ablock;

void init_groups() {
    agroup_main = malloc(sizeof(Ablock));

    agroup_main->length = DEFAULT_GROUP_LENGTH;
    agroup_main->num = DEFAULT_GROUP_NUM;

}
Run Code Online (Sandbox Code Playgroud)

Valgrind在行设置长度上说它是大小为4的无效写入,并且在分配大小为4的块之后地址是0字节.对于num,它是相同的,除了地址是大小为4的块之后的4个字节.我也不太明白这一点,因为长度只是一个int,而对我来说,错误听起来像我想为它分配内存......

c struct

0
推荐指数
1
解决办法
111
查看次数

标签 统计

c ×1

struct ×1