작성
·
271
0
구조체 설계
struct guy {
char favfood[10],
char job[10]
};
일 때는 기억공간을 아직 할당받지 않은 상태이고
구조체 변수 선언 혹은 선언 동시 초기화 할 때 메모리에 공간을 할당받는다고 이해했습니다.
struct guy barney; 이 때 기억공간을 할당받는다
포인터는 새로운 구조체를 생성하지 않고 기존의 동일 구조체를 가리킨다고 하셨는데, 구조체 포인터 변수는 구조체 포인터 변수 선언 시 메모리에 공간을 할당 받나요?
struct person* someone;
[정리]구조체 포인터 변수의 메모리 할당 시점이 궁금합니다.
답변 1
0
안녕하세요
포인터는 변수입니다. int 는 정수를 담는 변수이듯이 포인터는 주소라는 값을 담는 변수인 것이에요.
따라서 struct person* someone; (=person 구조체 인스턴스들의 주소를 담을 수 있는 변수) 의 할당 시점에 대해서 물으시는 것은
int * ptr; 혹은 int a; 의 할당 시점을 물으시는 것과도 같습니다.
구조체 메모리를 생성하는 것과는 상관이 없이, 기존의 구조체 메모리의 집 주소를 담는 것 뿐이구요,(그래서 구조체 인스턴스 메모리랑은 상관 없음. 그저 주소를 담는 것 뿐) 포인터의 할당 시점은 다른 변수들과 마찬가지로 선언 및 정의시 할당 됩니다. struct person* someone; 라고만 하셨다면 struct person 의 주소를 담을 수 있는 크기만큼의 메모리가 할당되며 초기화는 되지 않았으므로 쓰레기값이 들어있는 상태가 되겠네요.
(그리고 다음에 질문 주실 때 구체적인 강의 시간대를 함께 남겨주실 것을 부탁드립니다. "포인터는 새로운 구조체를 생성하지 않고 기존의 동일 구조체를 가리킨다고 하셨는데" 이 부분이 어디서 나오는지 모르겠어서요 ㅠ 감사합니다.)