반응형

MFC 전역함수



함수명

설명

AfxGeApp()

Application객체의 포인터 리턴

AfxGetMainWnd()

MainFram객체의 포인터 리턴
( Main Thread외의 Thread에서 호출하면 NULL이 리턴된다. )
이때는 다음 코드를 사용 : AfxGetApp()->GetMainWnd();

AfxGetAppName()

Application 이름 리턴

AfxGetInstancehandle()

Application Instance 핸들 리턴

AfxOleInit()

Ole환경 초기화

AfxMessageBox()

 

 

 

 

반응형

'Windows Programming' 카테고리의 다른 글

듀얼 모니터에서의 좌표값 확인  (1) 2008.07.04
COM DLL만으로 tlb파일 생성및 COM사용하기  (0) 2008.04.28
Afx의 의미  (0) 2008.04.14
스크린 크기 구하기  (0) 2008.04.02
[MFC] Windows Control 제어  (0) 2008.03.31
반응형

Watch window formatting Symbols

변수의 값을 확인하기 위해 사용하는 VC++Watch Window에서 변수의 값을 원하는 형태로 출력하는 Formatting Symbol에 대해 정리합니다.

 

n  Number

Symbol

Format

d,i

signed decimal integer

u

unsigned decimal integer

o

unsigned octal integer

x,X

Hexadecimal integer


 

n  String

Symbol

Format

s

String

su

Unicode string

st

Unicode string or ANSI string, depending on Unicode Strings setting in autoexp.dat.



 

n  Memory

Symbol

Format

ma

64 ASCII characters

m

16 bytes in hexadecimal, followed by 16 ASCII characters

mb

16 bytes in hexadecimal, followed by 16 ASCII characters

mw

8 words

md

4 doublewords

mq

4 quadwords

mu

2-byte characters (Unicode)

 

 

 

 

 

 

 


 

n  상수

Symbol

Format

hr

HRESULT Code

wm

Window Message

 

 

 




 

n  기타

Symbol

Format

@err

LastErrorCode

@eax

Register Value

 

 


반응형
반응형

C/C++로 작성한 어플리케이션에서 발생하는 에러중 가장 골치 아픈 에러가 메모리 에러가 아닌가 싶다.( 물론 deadlock이라던가 이런 문제들도 간단친 않지만... )

보통 몇년간 프로그래밍을 하다보면 malloc 혹은 free()를 호출할때(당연히 new/delete도 마찬가지다) 쌩뚱맞게도 메모리 에러가 발생하는 케이스를 경험하게 된다
.

처음 이 에러를 접했을때는 '대략난감'이랄까
?
하지만 대부분은 '내 잘못'인 에러 케이스다
.

이 현상의 대부분은 malloc을 통해 할당받은 메모리의 범위를 넘어서서 데이터를 복사하거나, 이중으로 free를 호출할때 발생한다.

(이 문제는 Windows의 메모리 관리 방법과 밀접한 관계가 있으며, 상기 동작으로 인해 Memory Block의 정보를 담고 있는 Description(?) 영역을 Overwirte해서 발생할 수 있다.- 그림과 함께 좀더 상세한 내용을 기술 하고 싶지만, 아직 내공이 부족해서 ㅡ.: 머지 않은 미래에 Study해서 Posting해보려 한다)

예를 들어.

char *p = (char *)malloc(10);
memcpy( p, p2, 11);

char *p = (char *)malloc(10);
free
(p);
.
.
.
free(p);

< * free한 메모리에 대해 NULL을 할당하는 것도 좋은 코딩 습관이다. NULL 포인터에 대한 free연산은 적법(?)하다>


이런 경우 코드가 포함되어 있다면, 불특정한 순간에 malloc하거나 free 할때 메모리 에러로 인해 어플이 종료되거나 드라이버의 경우 BSOD를 만나게 된다.
(
물론 위와 같이 눈에 띄게 코딩되어 있진 않을꺼라 장담한다 ㅡㅡ
)

운이 좋다면 문제 발생 지점의 전후를 살펴보면 문제를 확인 할 수도 있겠지만
,
세상일이 어디 그리 만만 하던가
?

1. Applicaton Verifier
gflags를 통해 도움을 받거나,

2. 문제가 발생한 메모리 블록을 추적해서 문제 지점을 유추하거나
3.
그것 마저 여의치 않다면 할당, 해제, 할당한 메모리에 대해 복사하는 코드들에 대한 꼼꼼한 체크가 필요하다.

 

반응형

+ Recent posts