我有下一个结构
struct Board
{
int width;
int height;
char **board;
}
我想扩展**板,这意味着我需要更多内存,因此需要更多内存 realloc的()。所以我的问题是我该怎么做 - 我应该分别在数组中的每一行上调用realloc()并在整个结构上调用它吗? 谢谢!
答案 0 :(得分:1)
致电realloc
board
,将元素数量增加1,然后在malloc
上调用board[height]
(假设高度为第一维)添加新元素行
答案 1 :(得分:0)
如果您想要更多行,则应在realloc
上致电board
,如果您想扩展行,则需要在之前分配的每一行上调用realloc
(例如{{} 1}},board[0]
等)
答案 2 :(得分:0)
如果你可以预测你需要多少内存,那么最好只调用一次。否则可能会大幅减慢整个文件夹。
答案 3 :(得分:0)
您需要在malloc
上致电realloc
而不是board
。实例化Board
对象时,不会为成员board
分配内存;所以这不是重新分配内存的问题,而是以multidimensional arrays的通常方式将分配内存分配给board
。
#include <stdlib.h>
int **array;
array = malloc(nrows * sizeof(int *));
if(array == NULL)
{
fprintf(stderr, "out of memory\n");
exit or return
}
for(i = 0; i < nrows; i++)
{
array[i] = malloc(ncolumns * sizeof(int));
if(array[i] == NULL)
{
fprintf(stderr, "out of memory\n");
exit or return
}
}
一次,您已经分配了内存,然后如果您需要展开{{1}}(例如board
最初为2x2,现在您希望它为6x6),请调用board
in您调用realloc
初始化malloc
的订单。