1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | struct p { int num; }; p* pp; struct p2 { int *num; }; p pp2; | cs |
구조체나 클래스나 같은거니 일단 저거 보면
두번째는 구조체 멤버를 동적할당하고 인스턴스를 그냥 만들어도...당연히 안에 있는 num은 동적할당 해서 쓰니 힙이겠고...
맞죠? 이건 뭐 이해 감
문제는 첫번재
첫번쨰는 구조체 멤버를 일반변수로 선언했짜나요? 그리고 나서 인스턴스 pp를 동적할당 해버리면...
구조체 안에 있는 멤버변수 num은 스택? 힙? 어디로 잡히는거임?
구조체 멤버변수는 일반변수니 스택인데 그 구조체를 사용할때 동적할당 했으니...힙으로?
뭐지?
엉?
1, p*에 대한 포인터 pp가 스택에 잡히고 pp가 가리키는 주소가 힙에 있고 그 주소안에 num이 들어이씀
그럼 첫번째는 결국 구조체 변수 num은 힙 메모리에로 잡힌거는겁미까?
구조체도 배열이랑 똑같아요 메모리 덩어리가 있고 그거의 상대적인 위치에 필드값이 들어있는게 전부
구조체가 힙에 잡혔으면 일단 그 안에 멤버들은 전부 구조체의 인스턴스 주소에다가 배열처럼 상대적인 위치만 더하면 접근가능