【发布时间】:2019-01-22 15:13:52
【问题描述】:
我想知道动态创建二维数组时分配了多少大小
假设如果我在 c++ 中动态创建一维数组,它会像
int* p = new int[10];
这意味着堆内存中有 40 个字节,堆栈内存中有 8 个字节(根据我的编译器) 但我很困惑如果我制作二维数组将分配多少内存 喜欢(对于 10*10 二维数组)
int** p = new int*[10];
for(int i = 0; i < 10; i++) {
p[i] = new int[10];
}
将在我的堆栈和堆中分配多少内存 堆栈中是 80 字节,堆中是 400 字节吗 或者别的什么
【问题讨论】:
-
请注意,动态分配的数组可能有未指定的内存开销,
sizeof数组对象没有反映出来。 -
不要像那样写二维数组。使用具有 2D 访问权限的 1D 数组。
-
如果指针为8字节,int为4字节,则栈上为8字节,堆中为8*10 + 4*10*10字节
-
@IłyaBursov 不止于此。
-
@MatthieuBrucher 对,但我认为实现细节在这个问题中并不重要
标签: c++