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
[26972] map memory 사용 증가
성철경 [twinsteel] 1097 읽음    2003-08-28 17:47
특정 Thread 내에서요..
map 내에 요소는 CString이고요
주기적으로 해당 map 에 있는 요소들을 삭제 하고
새로 추가 합니다.

그런데... 메모리 사용량이 계속 증가 합니다.
map 요소들을 삭제하는 루틴이 잘못됐는지.

Thread 내에서 map 이 safe 하지 않은지..

잘 모르겠습니다.

다만, 구글 같은데를 검색해보니.

map 요소들을 삭제할떄 CString의 소멸자가 호출 안돼서 그렇다고 하는것
같은데요.
해결책이 없을까요?

map 선언은 아래와 같고요
typedef map<int, CString, less<int> >  CRcvTagTable;

map 내 특정key 값을 가지는 CString 요소를 추가하는 부분은
아래 루틴을 사용하고요.
void XTest::SetHeaderField(CRcvTagTable *head_table, int key, CString value)
{
    head_table->insert(make_pair(key, value));
}


아래는 map 내 요소들을 삭제하는 루틴입니다.

void  XTest::RemoveRcvTagDatas(CRcvTagTable *head_table)
{
    CRcvTagTable::iterator begin = head_table->begin(),
                            end = head_table->end();
    int key;
    for( ; begin != end; )
    {
        key = begin->first;
        if(begin->second)
        {
            begin->second.Empty();
        }

        begin++;
//      head_table->erase(key);                                      // 이렇게 개별적으로도 삭제해 봤고요
    }

    head_table->erase(head_table->begin(), head_table->end());  // 한꺼번에 삭제도 해보았습니다.
    head_table->clear();                                                            // clear도 해봤고요..
}


고수님들의 고견 부탁합니다.

+ -

관련 글 리스트
26972 map memory 사용 증가 성철경 1097 2003/08/28
33274     Re:map memory 사용 증가 꼴.시크릿 928 2003/08/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.