c++ - 指针数组的动态分配及其替代方案

标签 c++ arrays pointers memory-management dynamic-allocation

使用 new int 分配数组的标准方法是:

 int* arr = new int[50];

在以这种方式声明时,将进行连续的内存分配,并且变量堆栈中将有一个数组变量。

如果我想以 50 个不同的指针变量的形式声明它,以便每个指针都有不同的内存地址并且不一定是连续的,最明显的方法是这样的:

int * arr[50];

但是以这种方式分配内存的命令/代码是什么(即通过 new int )以及以每种方式声明的缺点或优点是什么。

最佳答案

显而易见的方法是遍历所有元素并为它们分配内存:

for (int i = 0; i < 50; i++){
    arr[i] = new int;
}

非连续内存块的缺点是缓存未命中。 您可以阅读更多关于 here 的内容.

关于c++ - 指针数组的动态分配及其替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41238097/

相关文章:

c++ - QML 在 C++ 加载器中动态插入组件

javascript - 使用javascript构造json对象

c# - 在 C# 中将结构指针作为参数传递

c - 函数生成空字符串而不是输出 (C)

c++ - for_each 指针 vector 中的指针

c++ - 了解 STL 中的迭代器

c++ - Qt:将变音符号写入文件

c++ - 删除指向流的类成员指针的段错误

java - 找到右边最小的大元素

c++ - 如何在 C++ 中将 getline() 拆分为数组