簡體   English   中英

如何在C中為數組數組動態分配內存?

[英]How to dynamically allocate memory to a array of array in C?

我有以下 C struct

typedef struct {

    char *name;
    int nfollowers;
    char *followers[];
} User;

在我的代碼中有一點,我必須為struct的最后一個變量( followers )分配內存,但我遇到了問題。

我試過這個:

users[nusers].followers = (char **) realloc(users[nusers].followers, sizeof(char));

或這個

users[nusers].followers = (char **) realloc(users[nusers].followers, sizeof(char *));

但我編譯后得到的輸出如下:

錯誤:靈活數組成員的無效使用

我怎樣才能正確地做到這一點?

編輯

我的 C 文件的結構示例:

 User *users;
 int i=0, n, nusers=0;
 char aux, *str;
 
 fd_in = open(argv[1], O_RDONLY);
 
 if (fd_in >= 0) {

    users = (User *) malloc(sizeof(User));

    while (aux!='&') {

        users[nusers].followers = (char **) realloc(users[nusers].followers, sizeof(char)); //Issue

          while (aux != '#') {
              ...
          }
      }
  }

正如 tadman 所提到的,而不是char *followers[]; 使用char **followers; 聲明該字段。

還要注意 malloc 不會初始化內存(盡管在 linux 上,如果未重用,內存可能會初始化為 0),因此您使用 realloc 可能會導致堆損壞。 相反,只需再次使用 malloc (或使用 calloc 分配結構)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM