|
structure 에 AnsiString Type 을 사용하지 마시고 char buf 를 사용하시면 될 듯합니다.
typedef struct _xSite {
char SiteMAC[MAX_PATH];
char SiteName[MAX_PATH];
.....
} xSite;
땅주인 님이 쓰신 글 :
: 아주 꼭지가 돌아 버릴 것 같습니다..
:
: 메인 폼에 structure 타입으로 된 배열을 잡았습니다.
: 프로그램 뜰 때 이 배열에 데이터 초기화 하고 그 이후에는 값을 사용함 하는데.
:
: 어느 순간 이 배열의 값이 바뀌어 있습니다. 오만가지 트레이스를 다 해보았는데..
: 특정 동작을 끝낼 때 까지는 그 배열의 값이 유지가 되는데..
:
: 마우스로 다른 어떤 이벤트를 발생 시킬 때 배열의 값이 바뀌어 버립니다.
:
: typedef struct _xSite {
: AnsiString SiteMAC;
: AnsiString SiteName;
: .....
: } xSite;
:
: 메인 폼의 멤버 변수
: xSite m_xSiteList[SITECOUNT];
:
: 가령,
: void DataUpdate() 함수를 이용해서 DB에 데이터를 업데이트 하는 작업을 수행하면
: m_xSiteList[0].SiteMAC 값이 이상하게 변경되어 있습니다. 가끔 쓰레기 값이고, 가끔은
: 함수 내부에서 사용했던 sql 문장의 일부분이 될 수 있구요..
:
: 분명히 메모리 누수 문제인 것 같은데.. 도무지 어디 인 지 감을 잡을 수가 없습니다.
: 도와 주세요..
:
: MEMProof 라는 툴에서 돌리면 아래와 같이 나오는데.. 어느 부분을 봐야 할 지..
:
: 620451D5 - in (-1)
: 620453D7 - in (-1)
: 075A3B3C - in
: Exception C0000005 ACCESS_VIOLATION at 06DF3C0F
: ---- Exception stack trace ----
: 06DF3C0F - ReallocMemory in (-1)
: 0CD01532 - in (-1)
: 0CD01939 - in (-1)
: 0CD142CE - __cg_stockResource in (-1)
: 0CD145E0 - __cg_stockResource in (-1)
: 0CD0174B - in (-1)
: 0CD01774 - in (-1)
: 620451D5 - in (-1)
: 620453D7 - in (-1)
: 075A3B3C - in
: Exception C0000005 ACCESS_VIOLATION at 06DF3C0F
: ---- Exception stack trace ----
: 06DF3C0F - ReallocMemory in (-1)
: 0CD01532 - in (-1)
: 0CD01939 - in (-1)
: 0CD142CE - __cg_stockResource in (-1)
: 0CD145E0 - __cg_stockResource in (-1)
: 0CD0174B - in (-1)
: 0CD01774 - in (-1)
: 620451D5 - in (-1)
:
: 스택의 어느 부분일 것 같은데.. 도와주이소..
:
: 감사합니다.
:
: 참고로 CodeGuard에서는 메세지 없이 깨끗하거든요..
|