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
[49222] Re:[질문]TList 의 객체 크기를 구하고싶습니다.
전재득 [jedclub] 1283 읽음    2007-05-09 20:38
초보빌더 님이 쓰신 글 :
: 만약
:
: TList *list = new TList;
:
: list->Add(동적배열);
:
: 이 들어갔을경우
: list->Items[0] 의 사이즈를 구할려면 어떻게 해야하는지 궁금합니다.
:
: int nSize = sizeof(list->Items[0]);
: 를 이용할경우에는 동적배열이 포인트이기때문에 무조건 4바이트가 나오는거 같습니다.
:
: 동적배열이 생성댈시의 정보를 갖고 있지 않고 있을때 TList 안의 메소드중에 아이템사이즈를 구할수있을까요?
:
:
: 도와주세요.. ;ㅁ;



할수는 있겠지만 느리고, 클래스 배열에 한해서는 잘 작동 하지 않을 수 있긴 합니다만 방법을 알려 드리지요;;

#include <Tlhelp32.h>

int GetVoidPointerSize(void *nPoint)
{
    int pid = (int)GetCurrentProcessId();
    HANDLE hSnap;
    HEAPLIST32 hl;
    HEAPENTRY32 he;

        hSnap = CreateToolhelp32Snapshot( TH32CS_SNAPHEAPLIST, pid );
        if( hSnap == (HANDLE)-1 ){ return 0; }

        hl.dwSize=sizeof(HEAPLIST32);
        if (Heap32ListFirst(hSnap,&hl))
        {
                do
                {
                    he.dwSize=sizeof(HEAPENTRY32);
                    if (Heap32First(&he,pid,hl.th32HeapID))
                    {
                        do
                        {
                            if( he.dwAddress == (DWORD)nPoint )
                            {
                                // get kernel heap allocation chunk size
                                char *t = (char*)(((unsigned char*)he.dwAddress) - 2);
                                return he.dwBlockSize - *(t);
                            }

                        } while (Heap32Next(&he));
                    }
                } while (Heap32ListNext(hSnap,&hl));
            }
        CloseHandle(hSnap);
    return 0;
}

먼저 이 함수를 등록 하시고,

사용 하실 때는

int nSize = GetVoidPointerSize(list->Items[0]);

이렇게 사용 하시면 됩니다...;;

극단 적인 방법이긴 하지만; 불가능 한건 아닙니다 ㅠㅠ

ps. 더 좋은 방법이 있을 수 도 있습니다;;

+ -

관련 글 리스트
49206 [질문]TList 의 객체 크기를 구하고싶습니다. 초보빌더 917 2007/05/08
49222     Re:[질문]TList 의 객체 크기를 구하고싶습니다. 전재득 1283 2007/05/09
49209     Re:[질문]TList 의 객체 크기를 구하고싶습니다. 이현진 1017 2007/05/09
49216         Re:Re:그렇군요.. 말씀감사합니다.(냉무) 초보빌더 883 2007/05/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.