누군가가 main 이외의 다른 함수 (예 : mymalloc())에 할당 된 메모리를 해제하는 방법을 제안 할 수 있습니까? 프로그램의 다른 기능을 무료로 호출 할 수 있습니까? 또는, 우리는 myalloc()에 메모리를 할당 했으므로, myalloc() 내부에서 메모리를 해제해야합니까? 다음을 구현하는 더 좋은 방법이 있는지 제안하십시오.malloc 및 무료 래퍼 사용
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);
}
}
출력 :
ERROR : arr1에 할당 된 메모리가 해제되지 않습니다.
'TEST.C : 20 : 오류 : 선언되지 않은'(먼저이 기능에 사용) 'ARR'. – ulidtko
@ulidtko : 고마워. 지금 수정되었습니다. 방금 내가하려고하는 것에 대한 아이디어를주기 위해 코드를 입력했습니다. – MemoryLeak
사실, 보안 코드를 작성하지 않는 한'free'를 사용하기 전에 메모리를 지울 필요가 없습니다. –