Может кто-нибудь подсказать, как освободить память, выделенную внутри функции, отличной от main (например, mymalloc () в приведенном ниже примере)?Работает ли вызов, свободный от другой функции в программе?Или, поскольку мы распределили память в myalloc (), нужно ли ее освобождать внутри самой myalloc ()?Пожалуйста, предложите, если есть лучший способ реализовать следующее.
int main(int argc, char ** argv) {
int * arr = {0};
foo();
return 1;
}
void mymalloc(int ** myarr1 ) {
(*myarr1) = (int*) malloc( sizeof(int)*25 );
(*myarr1)[3] = 69;
}
void myfree(int ** myarr2 ) {
if (*myarr2) {
memset(*myarr2, 0, sizeof(int)*25 );
free(*myarr2);
}
void foo() {
int * arr1 = {0};
mymalloc(&arr1);
printf("car[3]=%d\n",arr1[3]);
myfree (&arr1);
// Check if memory was freed
if (arr1) {
printf("ERROR: Memory allocated to arr1 is not freed.");
exit (1);
}
}
Вывод:
ОШИБКА: память, выделенная для arr1, не освобождена.