|
몇 주 전에 아래와 같은 질문을 드렸는데.. 답변 주신 분이 포인터가 변한 것 같다고
하셔서 그대로 추적해 보니 정말로 포인터가 변화되더군요.
그런데,그런데,그런데, ....
왜 포인터 값이 변화가 되는 지 ? 그 이유를 아~~ 미칠 것 같슴다.
프로그램 최초 실행단계에서 아래의 로직은 에러를 내지 않고 동작합니다.
그런데.. 아래의 로직이 있는 메소드(GetAlarmData())를 빠져나오면 CheckBox_A5의
메모리 번지 값이 변해 버립니다. 0133438 => 01333401 ( 이거 16진수인가? )
그래서 다시 이 루틴 속으로 들어갔을 때 에러를 내는 것으로 확인했습니다.
디버거로 쫓아가보니 GetAlarmData()루틴을 빠져나오자 마자 포인터 값이 변하더군요.
무슨 잘못이 있나 해서 CheckBox_A5로 어떤 값을 넣거나 하는 로직을 뒤져봤지만
없습니다... 이런 경우 어떻게 처리를 해야 할 지...??
고수분들의 도움을 바랍니다.
참고로 이 클래스는 Main Form용 클래스로 각종 컨트롤(CheckBox,ListBox,Panel, Level, Image)을
굉장히 많이 사용합니다. 대략 2032개의 컨트롤을 사용 중에 있습니다. 이런 것과 연관이 있는 지
.... ?? 그 중에 판넬이 특히 많고 Checkbox, ListBox를 많이 사용하는데 혹시나 리소스를 너무
많이 먹어서 그런 것이 아닐까? 하는 염려도 .....
[아래는 몇 주전 질문 내용]
-------------------------------------------------------------------------------
미칠 것 같습니다.
잘 돌아가는 프로그램에다가 checkbox 하나를 추가했습니다.
그리고는 실행했는데... 추가한 checkbox의 값을 읽어오지 못합니다..
그냥 Access Violation 나오고 오리 무중입니다.
-------------------------------------------------------------------------------
// 윗부분 생략
if ( CheckBox_A4->Checked ) {
if ( ! first ) { Str += " ( TypeCode = '4' "; first = true; }
else { Str += " or TypeCode = '4' "; }
}
if ( CheckBox_A5->Checked ) { // 이부분에서 Access Violation ---------------
if ( ! first ) { Str += " ( TypeCode = '8' "; first = true; }
else { Str += " or TypeCode = '8' "; }
}
// 아랫부부분 생략
-------------------------------------------------------------------------------
이거 C++ Builder의 자체 버그가 아닌가요?
해결할 방법을 알려주세요....
참고.. 다른 화면에는 checkbox를 추가했는데..그것을 잘 되거든요..
이것 참....난감 스럽습니다. .... 좋은 답변을 ......
--------------------------------------------------------------------------------
|