본문 바로가기

[펌]C/C++ Secure Function 에 대해서 Visual Studio 2005 Secure Function 에 좀더 쓰겠습니다. 사실 strcpy 류의 함수를 _s 의 postfix를 붙여주는 것만으로는 충분하지 않습니다. char szBuf[10]; strcpy(szBuf, “test”) 와 같은 코드를 그냥 컴파일 하면 분명히 deprecated warning이 나옵니다. 그리고 _CRT_SECURE_NO_DEPRECATE 를 정의하거나, #pragma warning 을 이용해서 warning control을 할 수 있습니다. 이 방법은 예전의 방법입니다. Secure check를 전혀 하지 않는 방법이지요. 그런데 C++의 특성상 string manipulation 과정에서 buffer overrun이나 stack을 깨먹는 경우가 허다해서 _.. 더보기
다중 스레드 동기화 (2) 커널 모드 유저 모드에서 커널 오브젝트에 접근을 할 때 시스템은 커널 모드로 변환을 합니다.커널 오브젝트에는 File, Event, Mutex, Semaphore, Process, Waitable Timer, Job, Thread 가 있습니다. 커널 모드에서 동기화는 커널 오브젝트가 non-Signal인지 Signal 상태인지를 보고 쓰레드를 스케쥴링합니다.커널 오브젝트가 signal상태이면 쓰레드가 돌아갈 준비가 된 상태이고, non-signal 상태이면 쓰레드는 기다림(Wait)상태 입니다. 이벤트(EVENT) 가장 많이 보편화되고 많이 쓰는 다중 쓰레드 동기화 오브젝트가 이벤트가 아닌가 생각이 됩니다.이벤트로 다중 쓰레드 동기화 하는 방법에는 두가지 방법이 있습니다. 개발자가 직접 이벤트를 수동으로.. 더보기
다중 쓰레드 동기화 (1) 쓰레드 동기화 오브젝트 (Thread Synchronization Objects) 쓰레드가 2개 이상 실행될 때 여러가지 변수 가있습니다.하나의 공유자원(예를들어 동시에 접근하는 변수) 에 접근할 때, 파일 입출력 이나 디바이스I/O작업을 할 때 동기화 오브젝트가 필요합니다.동기화 오브젝트 없이 쓰레드가 공유 자원을 사용할 때 공유자원이 원치 않은 값이 될수 있고, I/O작업 시 쓰레드가 I/O작업이 끝날 때 까지 무한정 블로킹(blocking : 특정 함수가 리턴 될 때 까지 기다림)현상이 발생할 수 있습니다.동기화 오브젝트를 사용하여 다중 쓰레드에서 어떻게 안전 하게 공유자원에 접근하고 다른 쓰레드간의 실행 순서등을 조작하는지에 대해 알아 보겠습니다. 동기화 오브젝트는 유저 모드와 커널 모드로 분류할.. 더보기
MFC SDI 템플릿 기본 개념 ① 애플리케이션 클래스 얻기 CTestApp *pApp = (CTestApp *) AfxGetApp(); ② 메인프레임 클래스 얻기 CMainFrame *pFrame = (CMainFrame *) AfxGetMainWnd(); ③ View 윈도 클래스 얻기 CMainFrame *pFrame = (CMainFrame *) AfxGetMainWnd(); CTestView *pView = (CTestView *) pFrame->GetActiveView(); or CTestView *pView = (CTestView *) ((CMainFrame *) AfxGetMainWnd())->GetActiveView(); ④ Document 클래스 얻기 CMainFrame *pFrame = (CMainFrame *) Af.. 더보기