C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[57654] Re:Re:Re:Re:[Q]구조체 크기의 비밀
안명호.ASURADA [asurada] 1109 읽음    2009-07-19 10:50
질문이 좀 난해 한가요?

멤버 함수가 객체의 생성과 무관하게 한번만 생성 된다면 일반 멤버 함수와 static 멤버 함수와의 차이점은 무엇인가요?

Lyn 님이 쓰신 글 :
: 멤버 함수랑 메모리 할당이랑 무슨 관계가있는지 ㅡ.ㅡ;;;
:
: 안명호.ASURADA 님이 쓰신 글 :
: : 답변 감사합니다.
: :
: : 그렇다면 한 가지 궁금한게 더 있는데 일반 멤버 함수와 static 멤버 함수의 메모리 할당에 대한 차이는 무엇인가요?
: :
: : Lyn 님이 쓰신 글 :
: : : 매소드는 는 구조체의 크기에 포함되지 않습니다. 오로지 변수만 크기에 포함됩니다
: : : 간단하게 얘기해서 같은 구조체를 1억번 생성 해도 함수는 딱 하나만 존재한다는겁니다. 함수가 크기에 포함된다면 그 메모리 소모는 엄청난 낭비겠죠 ㅡ.ㅡ;;
: : :
: : : 컴파일러 마다 조금씩 다르지만 예를들어 Test2의 void Init() 함수는 파라메터가 없는 것으로 보이지만 실제 컴파일 시에는 void Init(Test2* this) 로 변화됩니다. <그래서 this 포인터란게 존재 하죠 : )>
: : :
: : : 뭐 가상함수의 경우에는 추가적인 처리가 필요 하지만요 : )
: : : 
: : : 안명호.ASURADA 님이 쓰신 글 :
: : : : 구조체의 메모리 할당되는 방법이 궁금합니다.
: : : :
: : : : 변수만 갖는 구조체와 같은 변수에 멤버 함수를 갖는 구조체의 sizeof 크기가 어째서 동일 한 거죠?
: : : :
: : : : 	struct TEST 
: : : : 	{
: : : : 		int a;
: : : : 		int b;
: : : : 		int c;
: : : : 		int d;
: : : : 		int e;
: : : : 		int f;
: : : : 	};
: : : : 
: : : : 	struct TEST2
: : : : 	{
: : : : 		int a;
: : : : 		int b;
: : : : 		int c;
: : : : 		int d;
: : : : 		int e;
: : : : 		int f;
: : : : 
: : : : 		TEST2()
: : : : 		{
: : : : 			a = 0;
: : : : 			b = 1;
: : : : 			c = 2;
: : : : 			d = 3;
: : : : 			e = 4;
: : : : 			f = 5;
: : : : 		}
: : : : 
: : : : 		void Init()
: : : : 		{
: : : : 			a = b = c = d = e = f = 0;
: : : : 		}
: : : : 
: : : : 		int GetA() { return a; };
: : : : 		int GetB() { return b; };
: : : : 		int GetC() { return c; };
: : : : 		int GetD() { return d; };
: : : : 		int GetE() { return e; };
: : : : 		int GetF() { return f; };
: : : : 	};
: : : : 
: : : : 	int nSizeFunc1 = (int)sizeof(TEST);
: : : : 	int nSizeFunc2 = (int)sizeof(TEST2);
: : : : 
: : : : 	TEST *s1_1 = new TEST;
: : : : 	TEST *s1_2 = new TEST;
: : : : 
: : : : 	TEST2 *s2_1 = new TEST2;
: : : : 	TEST2 *s2_2 = new TEST2;
: : : : 

: : : :
: : : : nSizeFunc1 과 nSizeFunc2 가 모두 24로 나오네요.
: : : :
: : : : 테스트는 Visual C++ 2005 에서 하였습니다. 빌더는 다를까요? (다르지 않을 거라 생각이 드는데...)

+ -

관련 글 리스트
57642 [Q]구조체 크기의 비밀 안명호.ASURADA 1624 2009/07/18
57650         Re:Re:[Q]구조체 크기의 비밀 안명호.ASURADA 1114 2009/07/18
57654                 Re:Re:Re:Re:[Q]구조체 크기의 비밀 안명호.ASURADA 1109 2009/07/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.