목록C++ (12)
루토's sssssstory
참고 : http://msdn.microsoft.com/ko-kr/library/ms235342(VS.80).aspx 현상 : 1.ShellExecute를 이용해서 외부 응용프로그램을 실행했을 때 정상적으로 실행되지 않음. 2.Return value를 확인한 결과 SE_ERR_ACCESSDENIED 로 나옴. 3.해당 에러의 메시지는 "The operating system denied access to the specified file." 원인 : 처음에는 응용프로그램의 권한에 관련된 문제인 줄 알았으나 확인 결과 해당 응용프로그램이 Visual Studio 2005에서 빌드되었는데 실행하는 호스트에는 VC 2005의 CRT가 설치되어 있지 않았음. (또는 VC2005가 설치되어 있어도 설치된 .NET ..
Visual Studio 2005에서 디버깅 시에 발생하는 오류 Run-Time Check Failure #2 - Stack around the variable 'xxxxxxx' was corrupted. VS.NET VC++ 에서 사용하던 소스인데 VS2005 VC++로 컨버젼하여 사용중이던 소스. xxxxxxx 변수에 들어갈 사이즈를 초과할 경우에 발생한다. char[] 타입일 경우 사이즈를 늘려서 해결.
C++은 C언어를 지원한다. 그래서 예전의 C소스를 가져다가 사용할 수 있다. C 언어는 symbol에서 함수의 이름만으로 찾을 수 있다. 이 것은 C언어가 같은 함수 이름을 사용하는 것을 허용하지 않기 때문인데, C++에서는 다형성으로 인해서 같은 이름을 사용할 수 있다. 그래서 함수이름만으로 찾는 것이 불가능하다. 이런 것을 위해서 내부적으로 함수 이름을 변경해주는데 이것이 name mangling 이다. 다음과 같이 된다. int foo(void) {return 1;} int foo(int ) {return 1;} void goo(void) { int i=foo(), j=f(0); } int _foo_i (void) {return 1;} int _foo_v (int ) {return 1;} void..
Error LNK2005 : _DllMain@12 already defined cpp파일 내에서 DllMain 함수를 직접 구현하여 사용할 때 CString 등을 위해서 afx.h 를 include 시키게 되면 발생하는 에러이다. 일반적으로 이 LNK2005 에러는 다른 라이브러리 내에 DllMain이 포함되어 있는 경우에는 http://support.microsoft.com/kb/148652 에서 지시하는 대로 해결을 할 수가 있지만 cpp 파일내에서 DllMain을 직접 구현하여 사용할 경우에는 해당이 되질 않는다. 하지만 CString은 써야겠고... 이럴 때에는 afx.h 를 include시키지 말고 atlstr.h를 include시켜 사용하면 해결 할 수 있다. // #include #inclu..
The Function Pointer Tutorials Extensive Index 1. Introduction to Function Pointers 2. The Syntax of C and C++ Function Pointers 3. How to Implement Callbacks in C and C++ ? 4. Functors to encapsulate C and C++ Function Pointers 5. Topic Specific Links ------------------------------------------------------------------------------- Function Pointer에 대한 Tutorial이 있는 곳. Lars의 홈페이지 출처 : http://www.n..
크리티컬 섹션에 관련된 함수 중의 TryEnterCriticalSection은 EnterCriticalSection함수 대신에 사용할 수 있는 함수인데 이 녀석은 Windows NT이상에만 사용할 수 있기 때문에 사용하기 위해서는 다음과 같은 일을 해주어야 한다. 1. #include ; TryEnterCriticalSection은 winbase.h에 선언되어 있다. 2. _WIN32_WINNT Define 두 가지 방법이 있다. 첫번째는 직접 소스코드에 define 해주거나 프로젝트 설정에서 Define해준다. 1) _WIN32_WINNT 은 windows.h를 include하기 전에 define해준다. #ifdef WIN32 #ifndef _WIN32_WINNT #define _WIN32_WINNT ..
'_beginthreadex': identifier not found, even with argument-dependent lookup 크리티컬 섹션에 관련된 함수를 사용할 때 종종 빌드 에러를 만나게 되는데 VS.NET 에서 Win32 Console 프로젝트 기본 생성시에는 Run-time Library가 Single-Thread Debug로 잡혀있기 때문에 _beginthreadex를 찾지 못하여 빌드 에러가 발생한다. 정상적으로 빌드를 하려면 프로젝트의 속성 창을 열어서 'C/C++ - Code Generation' 의 Run-time Library 항목을 Single Thread에서 Multi Thread로 바꾸어 주면 된다.
출처 : http://www.dasomnetwork.com/~leedw/mywiki/moin.cgi WIN32 메모리 관리 Introduction Virtual Memory 구조 메모리 할당 알고리즘 관련 함수 가상 메모리 확보reserve 확보된 영역에서 특정 페이지를 commit 가상 메모리 해제free Memory-Mapped File Memory-Mapped File과 주소 공간 Memory-Mapped File의 이용 File Kernel Object 생성 File-Mapping Kernel Object 생성 File Data를 프로세스 주소 공간에 mapping Memory-Mapped File의 해제 Heap 프로세스의 기본 Heap 추가적인 heap의 용도 추가적인 heap의 사용 Heap..
출처 : http://keegan.tistory.com/trackback/2591. static_cast C++언어에서 캐스트(cast) 연산은 가장 보편적으로 사용되는 연산 입니다. 그러나 이것 만큼 정확한 의미를 모르고 사용되는 연산또한 없을 것입니다. Visual C++ 가 제공하는 캐스트는 크게 묵시적 캐스트(implicit cast)와 명시적캐스트(explicit cast) 두 가지로 나눌 수 있습니다. 묵시적 캐스트는 문법적인 키워드가 존재하지 않습니다. 이에 반해명시적 캐스트는 문법적인 키워드를 가지고 있는데, 여기에는 (), static_cast, const_cast,reinterpret_cast , dynamic_cast 다섯 가지가 있습니다. 이것에 대해 하나 하나 살펴 보겠습니다. s..
출처 : 검색 부분 발췌 헤더를 보면 다음과 같은 매크로가 있다. DECLARE_DYNCREATE(CMainFrame) 이것은 무엇인가?... 궁금하지 않은가?.. 바로 이것은.. RunTimeClass라는 구조체를 사용하겠다고 선언하는 것이다. 자세한 것은 솔직이 본인도 잘 모르지만.. 런타임 구조체라는게 어떤 것이라는 건 한번 되짚고 넘어가 볼 필요가 있다. 다음은 런타임 클래스의 정의를 설명해 놓은 원문이다. CRuntimeClass does not have a base class. Each class derived from CObject is associated with a CRuntimeClass structure that you can use to obtain information about ..