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

C/C++ Q/A
[1620] Re:[만해] 동적할당 삭제 부분인데요 좀 봐주세요
남병철.레조 [lezo] 1775 읽음    2002-11-23 22:43

동적으로 할당받는 영역을 힙이라합니다.
힙에는 윈도우 힙과 CRT(C RunTime library)힙이 있습니다.

윈도우 힙 : GlobalAlloc
큰 메모리 블럭을 할당받으시려면 GlobalAlloc을 사용하시는게 좋습니다.
10월 오프모임에서 김상구.패패루님께서 증언하신바를 보더라도 GlobalAlloc을 사용하면
메모리의 할당 및 삭제가 바로 반영됩니다.

CRT힙 : malloc , new
프로그램마다 별도로 독립적으로 존재하는 힙입니다.
각각의 프로세스는 윈도우 힙의 일부를 할당받아 CRT힙으로 사용합니다.
당연 작은 메모리 할당에는 윈도우 힙보다 빠릅니다.
CRT힙의 초기 크기는 64K이며 이 메모리량을 다 사용하면 두배씩 늘임니다.
즉, 큰메모리 할당시에는 메모리 공간 확장이 여러번 일어나므로 느려질 소지가 있습니다.

new일경우라도 메모리를 크게 잡아보세요 .
예를들면 MB 단위로.. ^^; 분명 메모리 변화가 눈에 확 띄일것입니다.
(내부적으로 자동 관리되기때문에 작은 메모리 변화가 없는것 같다고 염려하실건 없을듯합니다.)

누수가 걱정되시면 코드가드를...



만해 님이 쓰신 글 :
: 안녕하세요
:
: 만해입니다.
:
: 오늘 토요일이네요 모두들 즐거운 주말 보내세요
:
: 질문의 내용은요 이전에 제가 올린 소스의 일부분인데요
:
: 동적 할당한 메모리가 전혀 내려가지가 않아서
:
: 이러저리 원인 파악에 나서던중 아래 동적할당 삭제 부분이
:
: 실제로 메모리가 삭제 되지 않는것 같다는 생각이 들어서요
:
: 트래이스통해 작업 관리자의 메모리를 체크해보니
:
: 실제로 메모리가 내려가지가 않네요
:
: 삭제 구문이 잘못된건지
:
: 고수님들의 조언 부탁 드립니다.
:
: 아래 부분은 동적할당을 하는 부분 입니다.
:
: typedef struct _TObjectType
: {
:   char* Url;
:   unsigned int Depth;
:   unsigned int Count;
: }TObjectType;
:
: TObjectType *Obj = new TObjectType;
: Obj->Count = 1;
: Obj->Depth = ACurrentDepth+1;
: Obj->Url = new char[Url.Length()+1];
: strcpy(Obj->Url,Url.c_str());
: ObjVector.push_back(Obj);
:
: 그리고 이부분이 동적할당을 삭제 하는 부분입니다.
:
:  for ( size_t i = 0 ; i < ObjVector.size() ; i ++ )
:     {
:       TObjectType* temp = ObjVector[i];
:       if ( temp->Url != NULL )
:         delete [] temp->Url;
:       delete temp;
:     }
:
:   ObjVector.erase(ObjVector.begin(),ObjVector.end());
:   vector<TObjectType*>(ObjVector).swap(ObjVector);
:   vector<TObjectType*> temp;
:   ObjVector.swap(temp);
:   ObjVector.clear();
:
:   vector<TObjectType*>(ObjVector).swap(ObjVector); <-  Effective STL의 17번 문항을 인용
:
: 이렇게 제 나름의 최선을 다했는데 전혀 안되네요
:
: 고수님들의 도움 바랍니다.
:

+ -

관련 글 리스트
1613 [만해] 동적할당 삭제 부분인데요 좀 봐주세요 만해 1336 2002/11/23
1620     Re:[만해] 동적할당 삭제 부분인데요 좀 봐주세요 남병철.레조 1775 2002/11/23
1622         Re:Re:[만해] 동적할당 삭제 부분인데요 좀 봐주세요 만해 1426 2002/11/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.