Я просто изучаю динамику памяти и делаю эксперимент, но все равно застреваю. уже искать некоторые вокруг, но не дали никакого результата.Ошибка сегментации При использовании Realloc более 3-х раз
Это мой простой код:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef struct kata kata;
struct kata {
char string[256];
};
void load(kata **data)
{
int len = 0;
while(len < 5) {
(*data) = (kata *) realloc ((*data), (len + 1) * sizeof(kata));
printf("copy A - %d\n", len);
strcpy(data[len]->string, "A");
len++;
}
getch();
}
int main() {
kata *data = NULL;
load(&data);
}
и мой вопрос, почему это всегда ошибка сегментации (по 3), когда я его отладки?
спасибо за ваши советы
EDIT:
До сих пор не знаю, почему происходит ошибка, но я нашел решение только сейчас ..
просто изменить данные [Len ] -> string to (* data) [len] .string
Любая идея, почему мы называем данные [len] -> string, происходят некоторые случайные segfault?
Относительно вопроса из вашего редактирования: 'data [len] -> string' и' (* data) [len] .string' - это две разные вещи. Первый эквивалент '(* (data [len])). String'. – jamesdlin
Обратите внимание, что это обычное * не * поставить «(РЕШЕНО)» в названии вопроса здесь, если вы это поняли; вместо этого нажмите галочку рядом с ответом, который вам больше всего помог. – Ashe
Хе-хе, извините .., хорошо, я уже проверил один;) –