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
[56110] Re:아래 번외편님하고 둘리님 글을 보다가 모르는 부분이 있어서 그런데요
둘리 [dooly386] 1002 읽음    2009-02-11 04:55
ResultString = ResultString + buffer;
문장이 통신량이 자주 발생하면 안좋다는 것입니다.
궂이 좋다 안좋다 할 수는 없지만 ㅠ.ㅠ

ResultString 은 AnsiString 으로 작성 하셨을 것이기에 메모리가 자꾸 갱신되면서 잡히는 문제를
발생할 수 있습니다.
또한 string 길이가 길어지면서 buffer 가 자꾸 들어오면 앞서 받은 string에 대하여서도 계속적으로
string copy 에 의한 메모리 할당이 이루어지는 구조 입니다.

통신되는 량이 정해지거나 할 경우 일반 byte 배열을 쓰시든지 아니면 stream 을 사용
(StringStream 같은것도 좋을듯 합니다)  하거나 아니면 list 구조를 사용하심이 어떨까하고 적은 것 입니다.
앞서 말했듯이 통신량이 많거나 그 빈도가 많을경우 해당됩니다.

대략적으로 통신량이 적으시면 그냥 사용하셔도 무방하실듯 하고요..
아니면 이렇게 고치시는게

ResultString.cat_printf("%s",buff);

cat_printf 가 memory realloc 인지 검토를 해보는것도 좋은 방법 갖습니다.



왕초보 님이 쓰신 글 :
: 제가 dos 부분이 필요해서 가져다 쓰려는데 둘리님께서
:
: :          while(ReadFile(hread, buffer, sizeof(buffer)-1, &BytesRead, NULL) && BytesRead)
: :          {
: :                  buffer[BytesRead] = '\0';
: :                  ResultString = ResultString + buffer;
: :          }
:
: 이부분에서 로드가 걸려서 안좋다라고 하셨는데
: 어떻게 해결을 할수가 있을까요?
:
: 그냥 써도 무관할까요?

+ -

관련 글 리스트
56084 아래 번외편님하고 둘리님 글을 보다가 모르는 부분이 있어서 그런데요 왕초보 1056 2009/02/09
56110     Re:아래 번외편님하고 둘리님 글을 보다가 모르는 부분이 있어서 그런데요 둘리 1002 2009/02/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.