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
[17203] Re:Re:Re:memcpy 함수에 관해서..
^^ [] 1438 읽음    2002-04-04 11:56
아무래도 구조체에서 꼬여서 그런 것이 아닌가 하는 생각을 해 봅니다. 지난번에 올려 주셨던 소스코드만 가지고는 추론하는데 한계가 있습니다.  올려 주셨던 소스에서 각 변수들이 어떤 타입인지, 메모리는 얼마나 할당하였는지 전혀 알 수 있는 부분이 없습니다. 질문을 올리실 때는 이러한 부분을 신경 써서 올려 주세요. 답장하는 입장에서는 이게 몰까 이런 생각으로 추론하는 것에도 한계가 있으닌까요.

지난번에 올려 주신 소스코드
//---------------------------------------------------------------------------
strTmp = "0x01, 0x02, 0x03, 0x00, 0x04, 0x05";

while ( exist_0x )
{
    iPos = NULL;
    iPos = strstr (strTmp.c_str (), "0x");
    if ( iPos )
    {
        Qdata[count].IMG [i] = NULL;
        result = iPos - strTmp.c_str() + 1;
        image[i] = StrToInt (strTmp.SubString (result, 4));
        //if(image[i]==0)
        //ShowMessage(image[i]);
        strTmp = iPos+6;
        i=i+1;
     }
     else
     {
        exist_0x = FALSE;
     }
}
memcpy((char *)Qdata[count].IMG, image, i);
exist_0x = TRUE;
image[0]=0;
//---------------------------------------------------------------------------
가상 추론
strTmp : String type
iPos : char* type
exist_0x : bool type
i : int type
image : int* (또는 int []) type
result : char* type
Qdata : 알 수 없음
Qdata.IMG : 알 수 없음 (pointer 형인 것 같음)

여기에서 관건이 되는 Qdata에 대한 내용이 전혀 없습니다. 이 부분에 대한 내용을 올려 주세요. (솔직히 말씀드리면, 이렇게 질문 올리시면 답변 드리기 싫습니다.  다만 저도 문제에 부딪혀 보았고, 그걸 해결하기 위해 너무 힘든 과정을 거쳐 와서, 조금이나마 도움이 되었으면 하는 입장에서 답변 드리고 있지만요...
자신의 현재 상황을 모두 보여 주시면 답변하는 입장에서도 보다 쉽게 답변 드릴 수 있는데..., 이런 쓸데없는 질문들이 오가지않고....
그런 생각도 듭니다. 질문하는 방법을 몰라서 그렇다...)

그리고, 참고 삼아 말씀드리면,
[참고1]
memcpy (dest, src, size);
memcpy는 메모리 복사로써 메모리를 생성하는 것은 아닙니다. 무슨 소리인고 하면, 복사목적지가 되는 dest의 메모리가 memcpy를 하기 전에 반드시 해당 size 이상 생성되어 있어야 한다는 것입니다. (중요!! 잘 이해해 보세요.)

[참고2]
strTmp은 String(혹은 AnsiString)이라는 Class입니다.
strTmp.c_str () 이것을 할 때마다 같은 주소 위치를 주리라고 예상하겠지만 그렇게 되지 않습니다. 어떤 주소위치를 줄지는 아무도 모릅니다.




김경완 님이 쓰신 글 :
: 저도 제 능력으로 해보고 싶지만 잘 되지 않는군요..
:
: 그리고 memcpy(buffer1, buffer2, sizeof(int)*count)
:
: 위 처럼해도 결과는 똑같습니다.
: 0x00 이후로는 버퍼에 들어가지 않는군요.
:
: 관심 가져주셔서 감사합니다.

+ -

관련 글 리스트
17169 memcpy 함수에 관해서.. 김경완 1294 2002/04/03
17206     Re:memcpy 함수에 관해서.. 아리랑 1307 2002/04/04
17181     Re:memcpy 함수에 관해서.. ^^ 2382 2002/04/03
17193         Re:Re:memcpy 함수에 관해서.. 김경완 1294 2002/04/04
17203             Re:Re:Re:memcpy 함수에 관해서.. ^^ 1438 2002/04/04
17174     Re:memcpy 함수에 관해서.. 방태윤 1665 2002/04/03
17191         Re:Re:memcpy 함수에 관해서.. 김경완 1368 2002/04/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.