WaitForMultipleObjects Syntax DWORD WaitForMultipleObjects( DWORD nCount, const HANDLE *lpHandles, BOOL bWaitAll, DWORD dwMilliseconds ); Parameters nCount : 기다리고자 하는 객체 핸들의 배열의 크기 (최대 : MAXIMUM_WAIT_OBJECTS) lpHandles : 객체 핸들의 배열 bWaitAll : 모든 객체 핸들이 시그널 상태가 되어야 반환할지 아닐지 dwMilliseconds : 기다리는 시간을 밀리 초 단위로 제한 Return value 측정된 이벤트 값을 반환 Example #define OBJ_EVENT_START 0; #define OBJ_EVENT_STOP1; ..
개발을 하다보면 메모리 릭을 해결해야하는데요.보통 아래와 같은 생각을 하며 메모리 릭이 발생하지 않도록 개발을 할텐데,코드가 길어질 경우 메모리 릭을 찾기가 쉽지 않습니다. •new, malloc, calloc, realloc으로 할당 후 free, delete 해제 했는가?•메모리 할당 후 정상적으로 해제하기전에 로직 분기로 빠져나가는 경우에도 메모리 해제 했는가?•클래스의 경우 동작하면서 할당된 메모리를 소멸자에서 해제하고 있는가?•목록이나 캐시에 저장된 데이터에 할당된 메모리가 목록이나 캐시에서 제거 시 해제 되는가? •집합 저장소의 크기가 계속 커질 가능성이 있는가? 그래서 이번에는 어디서 메모리 릭이 발생하였는지 확인하는 방법들 중 하나를 소개해보려고 합니다. CRT Debugging이 방식은 ..
~*kb~# : 예외를 일으킨 쓰레드를 볼 때 사용 k : 콜스택 보여주기 ( Display Stack Backtrace )k명령은 kb, kp, kv, kn, kf 등 여러가지 추가 옵션이 있다. kb : 인자를 표시한다.kp : 함수 정보를 출력한다.kv : FPO 정보를 표시한다.kn : 스택프레임 번호를 함께 본다.kf : 로컬스택의 크기를 볼때 사용한다. ddd : 지정된 범위에 대한 메모리의 콘텐츠를 표시 db : 메모리를 Byte 배열로 보여주고 ASCII로 해석한다.dw : 메모리를 Word 배열로 보여준다.dd : 메모리를 Double-Word 배열로 보여준다.dq : 메모리를 Quad-Word 배열로 보여준다.dyb : 메모리를 Byte 배열로 보여주고, ASCII로 해석한다.dw : ..
windbg 심볼 패스 설정하기- [file]-[symbol file path ...] SRV*E:\symbols*http://msdl.microsoft.com/download/symbolsSRV*(심볼파일 저장할 경로)*(심볼파일 있는 경로) 0.000>.reload.reload 명령어를 입력하거나 심볼패스 설정할 때 체크하기 심볼 패스 쉽게 설정하기- symfix 명령어0:000>.symfix E:\symbols0:000>.reload 심볼 패스 추가하기- sympath 명령 뒤에 + 를 붙여 자신의 프로그램 심볼이 있는 폴더를 추가0:000>.sympath+ E:\mySymbols0:000>.reload 덤프파일 분석1) windbg 실행2) 위의 설명대로 심볼패스 설정3) [file]-[open ..
DuplicateHandle()오브젝트 핸들을 복사하는 함수 BOOL WINAPI DuplicateHandle( _In_ HANDLE hSourceProcessHandle, //복제할 핸들을 소유하는 프로세스 _In_ HANDLE hSourceHandle, //복제할 핸들 _In_ HANDLE hTargetProcessHandle, //복제된 핸들을 소유할 프로세스 _Out_ LPHANDLE lpTargetHandle, //복제된 핸들값을 저장한 변수의 주소 _In_ DWORD dwDesiredAccess, //복제할 핸들의 접근권한 _In_ BOOL bInheritHandle, //복제할 핸들의 상속여부 _In_ DWORD dwOptions //옵션 ); 가짜 핸들GetCurrentProcess() 함..
wininetwininet api를 이용하여 인터넷에서 파일을 다운로드 받을 수 있다.간단하게 흐름을 보면 아래와 같다. 1. 인터넷 open hinet = InternetOpen(_T("Test"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); 2. open된 인터넷 핸들에 connect → request 핸들 얻기 ( POST/GET 에 따른 ) → 얻은 핸들을 사용하여 request 보내기 hconnect = InternetConnect(hinet, _T("download.microsoft.com"), INTERNET_DEFAULT_HTTP_PORT, _T(""), _T(""), INTERNET_SERVICE_HTTP, 0, 0); hreq = HttpOpenRequ..
라이브러리 - 라이브러리 : 여러 프로그램에서 자주 사용하는 함수와 데이터들을 실행이 가능한 바이너리 형태로 묶어놓은 파일 - 대표적인 런타임 라이브러리 : Libcmt.lib, Libcmtd.lib, Msvcrt.lib, Msvcrtd.lib - 라이브러리 이름 중 ‘d’로 끝나는 경우 디버그 모드로 컴파일 할 때 사용되는 라이브러리 - 디폴트로 사용하도록 지정되어 있는 라이브러리 : 프로젝트 속성 > C/C++ > Code Generation > Runtime Library 에서 확인 가능 - 링커 : lib 파일들과 obj파일들을 하나로 묶어서 실행파일을 생성하는 과정을 주도 - 라이브러리 활용 방법 프로젝트 속성 > 링커 > input 탭에 라이브러리 추가해주기속성창 이용하지 않고 코드에서 #pr..
- Total
- Today
- Yesterday
- listview
- BOJ
- 백준알고리즘
- 백준
- OS
- layout
- ConstraintLayout
- C
- handshake
- 이진탐색트리
- WinDbg
- LinearLayout
- frameLayout
- DATABASE
- 운영체제
- 스프링부트
- 안드로이드
- 알고리즘
- windows
- Android
- 퀵정렬
- 스프링
- HTTP
- 네트워크
- debug
- adapter
- 정렬 알고리즘
- 윈도우
- RelativeLayout
- C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |