static의 진실
글쓴이: dkwkekzz / 작성시간: 토, 2016/11/12 - 6:20오후
안녕하세요.
궁금한게있습니다~.
디자인패턴:싱글톤에서
class GameMode { public: static GameMode& getInstance() { static GameMode gm; return gm; } static GameMode* getDynamicInstance() { static GameMode *gm = new GameMode(); return gm; } void intro() { std::cout << "fire\n"; } GameMode(); ~GameMode(); };
질문의 요점은
지역 정적 객체와 동적으로 생성된 정적 객체의 차이입니다.
이 둘의 메모리 사용법에 대한 차이를 알고 싶습니다.
잘 모르겠습니다ㅜㅜ 도와주세요.
Forums:
동적할당을 사용한 방식은 힙영역을 사용하죠.
정적변수는 PE파일(.exe, dll)에서 .data 영역에 저장됩니다. 동적할당은 heap영역에 저장되는 것은 잘 아실것이라 봅니다.
위의 정적 객체를 생성하는 방식은 .data영역에 GameMode의 크기만큼 데이터가 들어갈 것입니다.
반면 아래의 정적 객체를 동적할당하는 방식은 .data영역에 주소의 크기(32bit or 64bit)만큼의 영역이 할당되고 heap에 GameMode의 크기만큼 할당되어 실제 데이터가 들어있을 것 같네요.
댓글 달기