Używając realloc (X, 0) zamiast free () i używając malloc o długości łańcucha +1

Więc nie wiem, jak tym razem umieścić tytuł. Przede wszystkim chciałbym powiedzieć, że widziałem kilka komentarzy na tej stronie dotyczących ostrzeżenia, jeśli pytanie dotyczy „pracy domowej”. Mój jest, ale jest również ukończony i chcę po prostu zrozumieć, co dzieje się z kodem.

Od pewnego czasu czytam także posty i książki, ale myślę, że wciąż brakuje mi rzeczy.

Mam 2 wiersze kodu, których nie rozumiem w kodzie, z którym pracowałem. Praca polega na pobraniu dowolnego pliku używanego jako argument (jeśli jest to 0 plików, odczytuje ze standardowego wejścia) i drukuje je na standardowym wyjściu wstecz. Wszystko to, mówiąc o C, gdy próbowałem umieścić tag.

Pierwszy problem to:

array = realloc (array, 0);

Gdzie tablica jest zdefiniowana jako

char **array;

A problem polega na tym, że wolne nie działa, nie zwalnia wykorzystywanej przestrzeni (może użyłem jej źle? W innym miejscu wiedziałem, jak z niej korzystać, ale nie tym razem). Z testami, które zrobiłem i co przeczytałem, wierzę, że realloc robi to samo, ale nie jestem w 100%.

Drugi to:

char* alloc = malloc (strlen ((char*)string)+1);

Gdzie alloc jest używany do kopiowania dokładnej długości linii, którą zamierzam umieścić w tablicy, więc mogę po prostu wydrukować tekst wstecz.

A pytanie brzmi, dlaczego muszę użyć tego +1. To znaczy, jeśli nie używam z jakiegoś powodu, to nie działa, próbowałem z różnymi liczbami i działa za każdym razem, ale jeśli tego nie zrobię, +1 nie działa poprawnie.

Wiem, że prawdopodobnie pytanie jest zbyt nieprecyzyjne i źle napisane, aby naprawdę na nie odpowiedzieć, ale znowu nie jestem tego pewien i zrobiłem wszystko, żeby się wytłumaczyć (angielski nie jest językiem ojczystym, ponieważ prawdopodobnie jest oczywisty).

questionAnswers(6)

yourAnswerToTheQuestion