Building on what I learned here: Manipulating dynamic array through functions in C.
void test(int data[])
{
data[0] = 1;
}
int main(void)
{
int *data = malloc(4 * sizeof *data);
test(data);
return 0;
}
This works fine. However, I am also trying to using realloc in a function.
void increase(int data[])
{
data = realloc(data, 5 * sizeof *data);
}
This complies but the program crashes when run.
Question
How should I be using realloc in a function?
I understand that I should assign the result of realloc to a variable and check if it is NULL first. This is just a simplified example.
malloc()and you also correctly used thesizeof()operator... Awesome! +1.c, I am (and must be) prepared for clutter likechar *p = (char *)malloc(len * sizeof(char);, which is wrong at 3 places at least (exercise: figure out where).sizeof(char)is always 1, it's just clutter and decreases readability, third one: if you usesizeof(), you should really usesizeof(*variable)instead ofsizeof(type), because the latter will break when you change the type of*p.