Vas*_*lis 5 c++ memory arrays allocation dynamic
我想问一个关于C++中动态内存分配的问题.我理解我要提出的问题的本质很容易使用简单的C++技术解决,但对于这个特定的练习,我必须使用更像C的方法.让我举一个例子:
我有以下结构:
typedef struct A{
B *b;
int a;
}
typedef struct B{
C *c;
int x;
}
typedef struct C{
int y;
}
Run Code Online (Sandbox Code Playgroud)
让我们假设这个主要:
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;
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题如下:会发生什么?是否有可能将内存块分配test.b[i].c给与之前分配的内存块重叠test.b?如果可能发生这种情况我怎样才能防止它发生?如果不可能,你能准确解释如何calloc()分配内存吗?我真的很感激一个数字例子.
为 test.b[i].c 分配的内存块是否有可能与之前为 test.b 分配的内存块重叠?
不。
如果有可能发生这种情况,我该如何防止它发生?
这不可能发生,所以不用担心。
如果不可能,您能准确解释一下 calloc() 如何分配内存吗?
每次调用 时calloc,它都会返回一个指向零初始化内存块的指针,该内存块足够大以容纳所请求的对象数量,或者NULL如果失败的话。只要你不回来NULL,你就没什么好担心的。
我不确定你所说的“数字示例”是什么意思。
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |