2011-08-16 97 views
3

我的下一個結構realloc的一個結構,C

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

而且我想擴大**板,這意味着我需要更多的內存,從而調用 realloc的()。所以我的問題是我該怎麼做 - 我應該分別在數組中的每一行調用realloc(),並調用它在整個結構? 謝謝!

回答

0

您需要撥打malloc而不是reallocboard。當您實例化一個對象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初始化相同的順序調用reallocboard

0

如果你想要更多的線,你應該叫reallocboard,如果你想擴展線,你需要調用realloc你之前分配的每一行(例如board[0]board[1]等)

0

如果你能預測你需要多少內存,最好只調用一次。否則可能會大量減慢整個足部。

1

呼叫reallocboard被1至增加元件的數目,然後調用上board[height]malloc(假設高度是所述第一尺寸),以添加新行