How to use realloc in a function in C
arrays, c, malloc
Solution
You want to modify the value of an `int*` (your array) so need to pass a pointer to it into your `increase` function:
void increase(int** data)
{
*data = realloc(*data, 5 * sizeof int);
}
Calling code would then look like:
int *data = malloc(4 * sizeof *data);
/* do stuff with data */
increase(&data);
/* more stuff */
free(data);
Problem
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.