1

根据定义,数组是一块连续的内存位置。我从 Dynamic 中了解到的是我们可以在运行时分配内存。因此,对于动态数组,假设我们在运行时分配 100 个内存空间。现在我们执行一些其他操作并为其他变量分配少量内存空间。由于我们创建的数组是动态的,所以我想我们可以添加更多元素以占用更多内存空间。但我不明白的是,这将如何是连续的,因为下一个内存地址是每个占用的,并且根据定义,数组应该是连续的???

4

1 回答 1

1

您正在混合术语。在 C 和 C++中,数组在技术上是一系列相同类型的连续元素。当使用术语“动态数组”时,您不是使用标准强制术语,而是通用计算机科学术语,它指的是类似数组的容器,其大小可以在运行时改变。

在 C++ 中,这些类似数组的容器是通过vector实现的,包括<vector>标准库头文件。在其他语言中可能有其他设施。

C 没有动态数组,但您可以动态分配数组。这里的“动态”一词有不同的含义:它与动态内存的管理有关,也就是你在使用mallocfree功能时所做的事情。

在 C++ 中,动态数组是在后台管理动态内存实现的,但这是一个与术语无关的实现细节。

同样在 C 中,您可以实现动态数组(例如编写自定义库),但语言语法不支持它们的使用,就像在 C++ 中一样。

动态数组(在 C++ 或 C 中)的存储是否连续再次是实现细节。如果您需要将动态数组(一般含义)实现为 C/C++ 数组(技术术语),您最终将重新分配内存并显式复制元素。标准 C 库提供了realloc帮助处理此类任务的函数。

于 2013-09-14T10:32:00.033 回答