[英]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.