我的下一個結構realloc的一個結構,C
struct Board
{
int width;
int height;
char **board;
}
而且我想擴大**板,這意味着我需要更多的內存,從而調用 realloc的()。所以我的問題是我該怎麼做 - 我應該分別在數組中的每一行調用realloc(),並調用它在整個結構? 謝謝!
我的下一個結構realloc的一個結構,C
struct Board
{
int width;
int height;
char **board;
}
而且我想擴大**板,這意味着我需要更多的內存,從而調用 realloc的()。所以我的問題是我該怎麼做 - 我應該分別在數組中的每一行調用realloc(),並調用它在整個結構? 謝謝!
您需要撥打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
}
}
一次,你分配的內存,然後如果你需要擴大board
(如board
最初2x2的,現在你希望它是6×6),你叫malloc
初始化相同的順序調用realloc
board
。
如果你想要更多的線,你應該叫realloc
上board
,如果你想擴展線,你需要調用realloc
你之前分配的每一行(例如board[0]
,board[1]
等)
如果你能預測你需要多少內存,最好只調用一次。否則可能會大量減慢整個足部。
呼叫realloc
爲board
被1至增加元件的數目,然後調用上board[height]
malloc
(假設高度是所述第一尺寸),以添加新行