일단 포인터를 반환하는 함수일때
ex)
int main(void)
{
int* ptr;
ptr=f(4);
// ptr[0]~ptr[3]까지 출력
return 0;
}
int* f(int n)
{
int*p;
p=(int*)malloc(sizeof(int)*n);
// p[0]~p[n]까지 값을 넣어줌.
return p;
}
저렇게 함수 내에서 동적할당해주고 동적할당 해제는 어디서 어떤 변수로 해줘야하나요?????
f함수 내에서 return 전에 해제를 해버리면 이상한값들이 반환되고,,,
return 0; 바로 전에 해주면 되지 않나
free(ptr);
구글링하다보니까 뭐,, 함수에서 해제 못해주면 메인에서라도 해주라고 하는데,,, 실제로 메모리 공간 할당해준건 p에만 해줬지,, ptr에는 동적할당 해주지 않아서 free(ptr);해준다고해서 p에 할당해준것도 해제가 되는지 그게 의문이네요..ㅠㅠ
포인터가먼지 다시공부해라
메모리가먼지 다시공부해라
malloc이먼지 다시공부해라
free가먼지 다시공부해라
먼지- 청소해라