我有一个关于为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,而对我来说,错误听起来像我想为它分配内存......