【发布时间】:2020-11-11 04:35:35
【问题描述】:
我正在尝试在 c 中创建一个具有动态长度/大小的动态字符数组(向量)。
这是我的尝试:
#include <stdio.h>
#include <stdlib.h>
void push_back(char **arr, char *element, int *counter) {
if (*counter > 0) {
arr = realloc(arr, *counter * sizeof(char *));
}
arr[*counter] = element;
(*counter)++;
}
int main() {
char **arr = malloc(1 * sizeof(char *));
int counter = 0;
push_back(arr, "element", &counter);
push_back(arr, "element2", &counter);
push_back(arr, "element3", &counter);
push_back(arr, "element4", &counter);
push_back(arr, "element5", &counter);
push_back(arr, "element6", &counter);
for (int i=0; i<counter; i++) {
printf("%s <-\n", (char *)arr[i]);
}
free(arr[i]);
return 0;
}
我从标准输出收到以下错误:
realloc(): invalid next size
Aborted
我做错了什么?
【问题讨论】:
-
你已经在数组中为 *counter 字符串分配了足够的空间,然后你在 *counter 索引的元素中存储了一个字符串。这已经结束了!
标签: arrays c dynamic malloc realloc