3

我有下一个结构

struct Board
{
    int width;
    int height;
    char **board;
}

我想扩展 **board,这意味着我需要更多内存,因此需要调用 realloc()。所以我的问题是我该怎么做 - 我应该在数组中的每一行分别调用 realloc() 并在整个结构上调用它吗?谢谢!

4

4 回答 4

1

调用reallocboard元素个数加1,然后调用mallocboard[height]假设高度为第一维)添加新行

于 2011-08-16T14:33:56.507 回答
0

如果你想要更多行,你应该调用reallocon board,如果你想扩展行,你需要调用realloc你之前分配的每一行(例如board[0]board[1]等)

于 2011-08-16T14:32:30.783 回答
0

如果您可以预测需要多少内存,最好只调用一次。否则可能会大大减慢整个过程。

于 2011-08-16T14:32:33.617 回答
0

你需要打电话mallocnot reallocon board。当您实例化 的对象时Board,不会为该成​​员分配内存board;所以这不是重新分配内存的问题,而是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
        }
    }

曾经,您已经分配了内存,然后如果您需要扩展board(例如board,最初是 2x2,现在您希望它是 6x6),请realloc按照您调用的相同顺序调用mallocinitialize board

于 2011-08-16T14:33:22.233 回答