struct root
{
struct Qgroup
{
struct Qpost
{
struct Qcomment
{
struct Qcomment *next;
int likes;
int address;
} QComment[100];
int likes;
int comments;
int address;
} QPost[100];
int address;
int posts;
int users;
}QGroup[8];
}*Root = (struct root *)malloc(sizeof(struct root *));
在以下行获取访问冲突错误。
for(int i=0;i<5;i++)
Root->QGroup[i].address = i*128+1024*1024;
请帮我解决这个问题?
我尝试了静态分配和动态分配,但两者都无法读取上面循环中给出的数据。
此错误来自main()
答案 0 :(得分:1)
你的问题是内存分配:
malloc(sizeof(struct root *));
为指针分配内存,在大多数现代系统上只有4或8个字节。
我真的不需要在这里首先使用指针。
答案 1 :(得分:1)
Root = malloc(sizeof(struct root *));
这必须纠正如下:
Root = (struct root *)malloc(sizeof(struct root ));
无需转换为struct root *
,因为malloc
返回一个void指针,你可以将它指定给C中的任何其他类型。但是在C ++的情况下,你需要像你一样进行转换。
对于C ++,最好使用new
和delete
代替malloc
和free
。
所以你可以简单地使用如下:
Root = new root ;