본문 바로가기

Dev Language/C++10

Thread 생성 시 지역변수 유효 시점 함수 내에 선언된 지역 변수는 함수가 종료되는 시점에 스택에서 제거된다. ( 이것은 기본 내용 )그래서 아래와 같이 사용하면 안됨. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869typedef struct tag_PIPE_INFO{ WCHAR wcPipeName[256]; }PIPE_INFO; BOOL CPipeServer::StartPipeServer(WCHAR *wcpPipeName ){ DWORD dwThreadID = 0; PIPE_INFO Pipe_Info = { 0, }; StringCchCopy(Pipe_Inf.. 2018. 4. 11.
C++로 DLL 만들기 출처 http://blog.secmem.org/597 2017. 3. 8.
정적 결합과 동적 결합 & 가상함수 정적 결합과 동적 결합 소스 코드에 있는 함수 호출을 특정 블록에 있는 함수 코드를 실행하라는 뜻으로 해석하는 것을 “함수 이름을 결합한다.”라고 말한다. C언어에서는 각각의 함수가 별개의 함수에 해당하기 때문에 이 작업이 간단했지만, C++에서는 함수 오버로딩 때문에 이 작업이 조금 복잡하다. 어떤 함수를 사용하라는지 알아내기 위해, 컴파일러는 함수 이름뿐만 아니라 함수의 매개변수도 수행할 수 있다. 컴파일 하는 동안에 일어나는 결합을 정적 결합(static binding) 또는 초기 결합이라 한다. 하지만 프로그램을 실행할 때 사용자가 객체를 결정하는 경우, 컴파일 하는 동안에 그 객체가 어떤 종류인지 알 수 없는 경우에는 어떤 함수를 사용할 것인지 컴파일 시에 알 수 없다. 따라서 프로그램을 실행할.. 2016. 12. 23.
Is a, Has a 관계 & 상속 Is – a와 Has – a 관계 Fruit 클래스에는 과일의 무게와 칼로리 열량을 저장할 수 있다. 그리고 Fruit 클래스를 상속받는 Banana 클래스에는 Fruit 클래스 멤버들을 상속받을 수 있으므로 바나나 무게와 칼로리 열량을 저장하는 멤버들을 가질 것이다. 또한 일반적으로 과일에는 적용되지 않고 바나나에만 적용되는 바나나 연구소 껍질 지수와 같은, 새 멤버들을 Banana 클래스에 추가할 수 있다. 파생 클래스에 새로운 기능도 추가할 수 있으므로 그 관계를 is-a-kind-of로 표시하는 것이 더 정확하겠지만, 흔히 is-a 관계라는 말을 사용한다. 가장 일반적인 public 상속은 has-a 관계를 나타내지 않는다. 예를 들어, 점심이 과일을 가질 수는 있지만 일반적으로 점심은 과일이 아.. 2016. 12. 23.
참조 변수 & 복사 생성자 참조 변수 C++에 추가된 새로운 복합형, 참조(reference)는 미리 정의된 어떤 변수에 실제 이름대신 쓸 수 있는 대용 이름이다. 참조의 주된 용도는 함수의 형식 매개변수에 사용하는 것이다. 큰 구조체를 처리해야 하는 함수에서 포인터 대신 참조를 사용할 수 있다. void swap(int x, int y){ // 두 매개변수의 값을 서로 바꿔주는 기능 구현 } int a = 10, b = 20; swap(a, b); - 위와 같이 선언하면 메모리 상에서 swap 함수가 호출될 때, 스택에 int x와 y를 생성하고 a와 b에 들어있는 값 10,20을 복사해서 사용함. 따라서 swap 함수 호출 이후에 cout 2016. 12. 6.
if문과 switch문 if문과 switch 문의 차이점 비교 조건이 일정 개수일 때까지는 if문이 빠르고 조건이 많아지면 switch문이 더 빠른 것이 일반적이다. switch문은 내부적으로 점프 테이블이 있어서 개수가 많을 수록 유리하지만, 최근에는 if문에 대한 최적화가 잘 되어 있어서 if문이 빠르다. -> Test ; Debug 모드에서는 switch 문이, Releas 모드에서는 if문이 더 빨랐다. 2016. 12. 6.