如何在c++中为静态n维数组分配内存
How to allocate memory for a static n-dimensional array in c++
在运行时为c++中的n维数组分配内存的最佳方式是什么?我试图从文件中读取一个值矩阵,根据我读取的文件,矩阵可以是任何大小。但是,一旦创建了矩阵,其大小就是静态的。
由于在编译时我不知道大小是多少,所以我不能将其定义为int[a][b]
,所以我尝试使用指向像int**
这样的指针的指针,但当我声明int** arr; arr[0][0] = 1
时,我得到了一个错误。我也尝试过其他解决方案。例如,我尝试在构造函数初始值设定项中使用其中一个答案来确定数组大小,即使用int* arr; arr = new int[a]
,但一旦我尝试将其用于二维,它似乎就不起作用了。当然,我可能使用错误,但下面的代码块给了我一个segfault:
int** arr;
(*arr) = new int[a];
edit:当然,在我问完这个问题之后,我在Need help中找到了一些关于C++中二维数组的动态内存分配的半合适的东西。我宁愿不这样做,但这绝对可行。
你会这样做(从这个答案中窃取):
int** ary = new int*[sizeX];
for(int i = 0; i < sizeX; ++i)
ary[i] = new int[sizeY];
或者,您可以这样做:
int *ary = new int[sizeX*sizeY];
// ary[i][j] is then rewritten as
ary[i*sizeY+j]
它可能会消除指针间接寻址的头痛问题。
相关文章:
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- 具有自定义构造函数 (C++) 的类型的动态数组分配
- 如何通过 malloc 为队列数组分配内存?
- 具有动态数组分配的OpenMP嵌套循环
- 如何为数组结构的数组分配内存
- 如何为结构数组分配内存?
- cpp 数组 - 分配常量索引有效,而非常量索引不起作用
- 如何为字符指针数组分配内存?
- 在 C++ 中初始化后的数组分配
- 将数据分配给了数组分配,但程序显示了以缓冲区超支的输出
- C++函数问题中的数组分配
- 子数组分配:使用聚合对象错误的预期"{...}"进行初始化
- 为什么我的指针数组分配不起作用
- std::堆栈和堆栈溢出错误的数组分配
- 在 c++ 中是否有通过声明"implicit"数组分配?
- 在 c++ 中为 2-D "Dynamically Created"数组分配值时遇到问题
- 如何为C++数组分配指向第一个元素的指针
- 字符数组分配
- 将数组分配在固定数量的线程之间
- 为构造函数中的数组分配值