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
[51194] 동적으로 생성한 데이터를 가지는 구조체 배열 생성 관련 문의드립니다.
짱구오빠 [saonara] 1419 읽음    2007-11-10 13:58
구조체 선언부 입니다.

typedef struct {
    BYTE* bData;
    long nLen;
} DATALIST;

메인 프로그램에서

void __fastcall TScript::DataSetMain(void)
{
    DATALIST *tDataList = (DATALIST*)malloc(sizeof(DATALIST)*2);
   
    //DLL Function CALL
    DataSetFunc(tDataList);

    //Data 확인
    BYTE bTemp[256] = {0x00,};
    memcpy(bTemp, tDataList[0].bData, tDataList[0].nLen);
    memcpy(bTemp, tDataList[1].bData, tDataList[1].nLen);

   //DATA free   
    free(tDataList[0].bData);
    free(tDataList[1].bData);
    delete[] tDataList;
}


DLL 에서

void DataSetFunc(DATALIST *tSettList)
{
    BYTE bData1[6] = {0x01,0xA2,0x03,0x04,0x05,0x06};
    BYTE bData2[5] = {0x0A,0x0B,0x0C,0x0D,0x0E};
    BYTE* DATA1;
    BYTE* DATA2;

    DATA1 = (BYTE*)malloc(sizeof(bData1));
    memcpy(DATA1, bData1, sizeof(bData1));
    tSettList[0].bData = DATA1;    
    tSettList[0].nLen = sizeof(bData1);

    DATA2 = (BYTE*)malloc(sizeof(bData2));
    memcpy(DATA2, bData2, sizeof(bData2));
    tSettList[1].bData = DATA2;    
    memcpy(tSettList[1].bData, bData2, sizeof(bData2));
    tSettList[1].nLen = sizeof(bData2);
}   

이렇게 코딩했습니다.

맞게 하는건지 모르겠네요.
일단 데이터는 전달 받습니다.

또한 메인폼에서 free(tDataList)할때
데이터부분(구조체의 bData) free가 않됩니다.
그래서 직접
   free(tDataList[0].bData);
    free(tDataList[1].bData);
을 해주구요.

답변 부탁드립니다.
수고하세요.

+ -

관련 글 리스트
51194 동적으로 생성한 데이터를 가지는 구조체 배열 생성 관련 문의드립니다. 짱구오빠 1419 2007/11/10
51200     Re:동적으로 생성한 데이터를 가지는 구조체 배열 생성 관련 문의드립니다. 장성호 2189 2007/11/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.