Итак, у меня есть этот бит кода
int main(int argc, char *argv[]) {
char *vendas[1];
int size = 1;
int current = 0;
char buffer[50];
char *token;
FILE *fp = fopen("Vendas_1M.txt", "r");
while(fgets(buffer, 50, fp)) {
token = strtok(buffer, "\n");
if (size == current) {
*vendas = realloc(*vendas, sizeof(vendas[0]) * size * 2);
size *= 2;
}
vendas[current] = strdup(token);
printf("%d - %d - %s\n", current, size, vendas[current]);
current++;
}
}
Вот в чем дело ... Используя GDB, он дает ошибку сегментации на
vendas[current] = strdup(token);
, но самая странная вещь - это работаетпока размер его на 1024
.Размер увеличивается до 1024
, а затем он просто выдает ошибку сегментации около 1200 элементов.Я знаю, что проблема заключается в перераспределении памяти, потому что она работала, когда у меня был статический массив.Просто не могу понять, что.