【发布时间】:2020-08-03 08:10:46
【问题描述】:
试图了解堆中的分配内存但感到困惑
它们有什么区别:
int** p=new int*[n];
对比
int*p=new int[n];
2) 第一行代码 int** p=new int*[n] 这让人很困惑 int*[n] 返回什么和 new int*[n] 返回什么。
【问题讨论】:
-
不要发送垃圾标签。它与
C标签没有任何共同之处。 -
一般来说,
new T[N]构造一个大小为 N 的数组,其中每个元素的类型为 T,并返回数组的地址(类型为 T*,等于第一个元素的地址) .所以第一个给你一个指向 int 的指针数组,第二个给你一个 int 数组。 -
@churill 抱歉,我的理解不正确。我认为
n是一个变量。它可能只是代表一个修复号。第二个得到int数组的起始地址,decay不是一个合适的词吗? -
它不是二维数组,只有指针数组。
标签: c++ memory dynamic new-operator