在函数 C++ 中分配内存二维数组
Posted
技术标签:
【中文标题】在函数 C++ 中分配内存二维数组【英文标题】:Allocate memory 2d array in function C++ 【发布时间】:2016-06-21 19:46:12 【问题描述】:我正在尝试为 C++ 中的函数内的二维数组动态分配内存。 除了它是使用 malloc 和 dealloc 编写的之外,已经提出了一个与此完全相同的问题,所以我想知道您是否可以帮助我将其转换为使用 new 和 delete。这是另一个问题:
Allocate memory 2d array in function C
我尝试将其更改为以下代码,但出现错误。
void assign_memory_for_board(int ROWS, int COLS, int *** board)
*board = new int**[ROWS];
for (int i = 0; i < ROWS; i++)
(*board)[i] = new int*[COLS];
这是使用 malloc 和 dealloc 的答案:
void allocate_mem(int*** arr, int n, int m)
*arr = (int**)malloc(n*sizeof(int*));
for(int i=0; i<n; i++)
(*arr)[i] = (int*)malloc(m*sizeof(int));
谢谢!
【问题讨论】:
为什么这么多明星?只需使用适当的标准容器。 除非另有限制,否则始终首选std::vector
或std::array
,并考虑使用2D 视图而不是1D 物理阵列。
抱歉,标准容器是什么意思?
像 std::vector 这样的标准容器。
std::vector
等。人。
【参考方案1】:
试试看
int AllocMatrix(int ***K, int h, int c)
*K = new int *[h];
for(int i=0; i < h; i++)
*K[i] = new int[c];
if(K == NULL)
return 0;
cout<<"Avaiable!"<<endl;
return 1;
【讨论】:
【参考方案2】:你有额外的星星。函数应该是
void assign_memory_for_board(int ROWS, int COLS, int *** board)
*board = new int*[ROWS];
for (int i = 0; i < ROWS; i++)
(*board)[i] = new int[COLS];
【讨论】:
非常感谢!那么 C++ 会处理一些指针吗?因为在 C 中有更多的指针。 他们说you shouldn't cast the result ofmalloc()
in C。
char* hoge = new char[10];
<type of pointer to elements of the array> <variable name> = new <type of elements of the array>[<number of eiements>];以上是关于在函数 C++ 中分配内存二维数组的主要内容,如果未能解决你的问题,请参考以下文章
JAVA里String数组在内存分配中分配的空间每个占几个字节?