Jednym z elementów programu, który muszę napisać jest wczytywanie liczb do tablicy aż do momentu, kiedy wpiszemy zero. Problem w tym, że rozmiar tablicy nie jest znany.
Napisałem to w taki sposób:
Jednym ze zgłaszanych błędów jest:
“This may be due to a corruption of the heap.”
Jeśli ktoś widzi co zrobiłem źle, proszę o jakieś wskazówki.
Na początek zdecyduj się czy we wskaźniku “tablica” trzymasz początek tablicy czy jej koniec bo w tej chwili używasz go do obu celów. Ponadto
sizeof(*tablica)
z pewnością nie jest tym co chciałes osiągnąć, na komputerach 64bitowych zwróci 8(rozmiar wskaźnika) podczas gdy pojedynczy int w tablicy zajmie tylko 4.
Realloc co obrót pętli to paskudny wzorzec w kodzie. Pamięć jest tania. Zaalokuj sobie na przykład sto kilo i jak braknie, wtedy użyj realloc, żeby powiększyć rozmiar dwukrotnie.
Naucz się na prostszym przykładzie jak działa alokacja pamięci. Najlepiej obserwując wszystko w debuggerze. Bo ewidentnie nie wiesz co robisz.