I am trying to create a small c program that will read a string with arbitrary size, without having any memory leaks.
According to my research, the function malloc can be used to allocate a number of bytes for whatever data we want to store.
In my program, I start by allocating space for 0 characters, and I make the pointer word point to it. Then whenever I read a single character, I make a pointer oldWord that points to word, which frees the old memory location once I allocate a larger memory location for the new character.
My research shows that the function free can be used to free an old memory location that is no longer needed. However, I am not sure where I am going wrong. Below you can see my code.
#include <stdio.h>
#include <stdlib.h>
int main(void){
    char *word = malloc(0);
    printf("Enter name: ");
    readWord(word);
    printf("Your name is: %s\n", word);
    free(word);
    word = realloc(0);
    printf("Enter name: ");
    readWord(word);
    printf("Your name is: %s\n", word);
    free(word);
    return 0;
}
void readWord(char *word){
    int i = 0;
    char *oldWord, c = getchar();
    while(c != ' ' && c != '\n'){
        oldWord = word;
        word = realloc(word, i + 1);
        free(oldWord);
        word[i++] = c;
        c = getchar();
    }
    oldWord = word;
    word = realloc(word, i + 1);
    free(oldWord);
    word[i] = '\0';
}
 
     
    