|
EmptySpear 님이 쓰신 글 :
: seamusic 님이 쓰신 글 :
: : 디비를 읽어서 포인터 이중배열에 저장하려고 하는데요
: : 그게 이상해서
: : 디버깅을 해보니까
: :
: : 이상한 값들이 들어갑니다.
: : 포인터 때문인 것도 같은데...
: : 어찌 해야할지 모르겠어요..도와주세요....ㅜ.ㅜ
: :
: : szDataList[i][0] = ADOQuery1->FieldByName(szColumnName[0])->AsString.c_str() ;
: : szDataList[i][1] = ADOQuery1->FieldByName(szColumnName[1])->AsString.c_str() ;
: : szDataList[i][2] = ADOQuery1->FieldByName(szColumnName[2])->AsString.c_str() ;
: :
: : 이렇게 쓰거든요...
: : char *szDataList[200][50] 으로 선언 되어있구요..
: :
: : 안되면.....
: : 우웅~~ ㅜ.ㅜ
: : c_str()은 문자열 포인터를 반환하잖아요..
: : 문자열 데이타를 할당해주는 방법이라도....
:
: strcpy(szDataList[i], ADOQuery1->FieldByName(szColumnName[0])->AsString.c_str());
: 또는 strncpy(szDataList[i], ADOQuery1->FieldByName(szColumnName[0])->AsString.c_str(), 50);
: 하세요 ..
: 이상한 값은 아마도 ADOQuery1->FieldByName(szColumnName[0])->AsString의 주소값(포인터)일듯
포인터 값 같은 이상한 수치가 아니라요...
음...디버깅 하면서 각 배열에 들어가는 값이....
이미 할당 된 값에... 현재 읽은 문자열이 겹쳐서 들어가기도 하고..
그래요~~
ㅜ.ㅜ
응급처치로 malloc을 사용 하였는데....
이것을 사용후에 free 도 해줬는데요~~~
(위 사용 용도가 디비 내용 엑셀에 저장하기 위한건데요...)
다시 시도 했을때 (- malloc 저장 하려 했을때)
마지막 값을 할당하려 할때 에러가 납니다~~ ㅜ.ㅜ
왜 그럴까요?
|