【发布时间】:2021-02-09 06:01:01
【问题描述】:
int* arr = new int[5];
arr 指向的数组的值是否在堆中连续分配?
谢谢。
【问题讨论】:
-
int *arr = int[5]不正确 - 您遗漏了关键字new。数组的元素在内存中是连续的。除其他外,这就是指针算术起作用的原因。 “堆”是一个过时的术语,指的是特定的内存模型 - 并非所有实现都需要使用它。 -
如果不是连续的,它怎么可能工作?你必须能够索引它,做指针算术等等。
-
具有动态存储持续时间的对象不一定分配在堆上。在实践中它们可能是,但这不是语言的要求。
-
@Barmar 即使是多维数组也会一样吗?我在想也许一个级别是连续的,但每个级别可能与另一个级别不连续
标签: c++ arrays memory heap-memory