함수에서메모리 동적할당하고 함수가 끝나면 포인터변수도 같이 소멸돼나요?
베네딕트
2023.07.25
질문 제목 : 질문 내용 :
만약에 함수test()함수에서
#include stdio.h
#include stdlib.h
void test();
void main()
{
test();
}
void test(){
int *p;
p=(int*)malloc(sizeof(int));
}
이런식으로 함수 종료 하고 메인으로 빠져나오면 포인터변수 p도 같이 소멸돼면서
동적할당한 영역은 접근불가 돼나요?
-
튼동 2023-07-25
지역변수는 블록의 끝을 만나면 소멸됩니다
-
뿌닝 2023-07-25
네 지금같은 구조에서는 그렇습니다. 만약에 main에서 할당하고 서브함수 호출 하기전에 동적할당주소를 넘김으로써 서브함수를 사용하고도 종료되어도 메모리는 메인에서 할당하였기에 사용가능하겠지요~~