我想问一个关于 C++ 中动态内存分配的问题。我知道我要提出的问题的性质很容易使用简单的 C++ 技术来解决,但是对于这个特定的练习,我必须使用更像 C 的方法。让我举个例子:
我有以下结构:
typedef struct A{
B *b;
int a;
}
typedef struct B{
C *c;
int x;
}
typedef struct C{
int y;
}
让我们假设这个主要:
int main(){
A test;
test.a = 1;
test.b = (B*)calloc(2,sizeof(B));
test.b[0].c = (C*)calloc(2,sizeof(C));
test.b[0].x = 2;
test.b[0].c[0].y = 3;
test.b[0].c[1].y = 4;
test.b[1].c = (C*)calloc(2,sizeof(C));
test.b[1].x = 5;
test.b[1].c[0].y = 6;
test.b[1].c[1].y = 7;
}
所以我的问题如下:会发生什么?分配给的内存块是否有可能test.b[i].c
与之前分配的内存块重叠test.b
?如果有可能发生这种情况,我该如何防止它发生?如果不可能,您能否准确解释如何calloc()
分配内存?我真的很感激一个数字示例。