I got and error which says
Debug assertation failed and heat corruption detected
like everything is working good in my program but I get that error. Where is the memory leak here? I have to free that memory in the main because my functions need to return pointers.
My code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int *dynamic_reader(unsigned int n) {
    /*making new array and checking if allocation succeeded*/
    int *mem;
    mem = malloc(n * sizeof(int));
    if (!mem) {
        printf("Memory allocation failed\n");
        exit(-1);
    }
    /*letting the user to input the values for the array*/
    int i = 0;
    while (i < n) {
        scanf("\n%d", &mem[i]);
        i++;
    }
    /*printing the array just to make sure everything is good*/
    for (int j = 0; j < n; j++) {
        printf("%d  ", mem[j]);
    }
    return mem;
}
int *insert_into_array(int *arr, unsigned int num, int newval) {
    /*making new bigger array*/
    int *newarr = realloc(arr, (num + 1) * sizeof(int));
    /*adding the integer to this new array */
    newarr[num] = newval;
    printf("\n");
    /*printing to make sure everything is correct*/
    for (int j = 0; j < num + 1; j++) {
        printf("%d  ", newarr[j]);
    }
    return newarr;
}
int main(void) {
    /*In dynamic_reader function I need to make an array which size is given as a parameter*/
    /*In this case I choosed 3*/
    int *arr = dynamic_reader(3);
    int num = 3;
    /*In insert_into_array function I need to add one integer to this array I made in dynamic_reader*/
    /*The parameters are the array, the number of elements in the array already done and the integer I want to add*/
    int *c = insert_into_array(arr, num, 9);
    /*I free the memory here because I need to return the pointers of these arrays in the function so it cant be done there*/
    free(arr);
    free(c);
}
 
     
     
     
    