MFC기본 - 윈도우즈 MFC 프로그래밍 , 정보문화사, 유동근 VisualStudio2017 에서 Windows데스크톱 프로젝트를 만들고, 코드는 wWinMain() 안에 있는 코드는 모두 삭제하고 21행처럼 MessageBox() 호출 함수만 입력하고 실행하면 메시지 창이 뜬다. 위 코드는 콘솔 응용프로그램 인데, 프로그램 시작이 main() 이 아닌, 전역변수 클래스의 생성자가 먼저 실행한다. 프로그램 실행은 main()부터 시작한다고 알고 있는데, 전역변수 생성자는 CRT main(C-Runtime)이 전역변수로 선언된 객체의 생성자를 호출하기에, CRT main 이 시작함수이고 main()는 CRT main 함수에서 호출하는 함수일 뿐이다. CRT main 역활 1. 전역변수로 선언된 객체의 생..
HEAP CORRUPTION DETECTED 코드는 멀티바이트 기준, memcpy_s()는 int크기로 복사, strncpy_s() 는 __int64 크기 복사 가능. 아래 코드 주석처리한 10행과 같이 memcpy_s() 로 하면 문제없는데 11행 같이 strncpy_s() 를 이용해서 힙에 할당한 변수 a에 문자열을 복사하면 15행에서 힙 해제할때 아래 그림과 같은 오류가 발생한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int nLength = 0; int nMaxSize = 100; TCHAR* a = new TCHAR[nMaxSize]; ZeroMemory(a, nMaxSize); CString str(TEXT("12345")); int nStrSize = str.Get..
COM/DCOM 연결 실패 CoInitialize(NULL); CComPtr spObject; if (spObject.CoCreateInstance(__uuidof(API), NULL, CLSCTX_LOCAL_SERVER) != S_OK) DCOM 서버에 연결하기 위해 위 코드를 실행하는 함수를 호출하면 DCOM 연결이 안되는 경우, 직접 함수를 호출하지 말고, PostMessage() 로 사용자 정의 메시지를 전송해서 해당 함수를 실행하게한다. (SendMessage() 도 안됨) 쓰레드로 사용하는것도 아닌데 원인은 모르겠다....