전체 글(603)
-
(작성중)배열 vs 다형성(more effective c++ 03)
다형성기본 클래스 객체의 포인터나 참조자를 통해 파생 클래스 객체를 조작할 수 있다.이런 포인터와 참조자를 다형성을 가지고 있다라고 말한다.마치 여러개의 타입처럼 쓰인다는 말이다. 파생 클래스 객체의 배열(array)을 기본 클래스 포인터나 참조자를 이용해 다형적으로 사용하려고 하면?.. 이것은 문제!- 컴파일러는 배열에 들어있는 각 객체의 크기가 sizeof(base 객체)라고 가정한다.(실제로는 derived 객체여야 하기때문에 문제가 생긴다.)- 컴파일러는 배열의 크기만큼 메모리를 읽기 때문에 결과를 예상할 수 없다.
2015.07.25 -
C++ 캐스팅(more effective c++ 02)
프로그래밍계의 1급 기피대상.goto와 cast는 재앙이라고 한다... C 스타일 캐스트?C 스타일의 캐스트는 어떤 타입을 다른 타입으로 아무 생각 없이 바꿔주는 괴물!- 캐스팅 다양성이 부족(상수성만 바꾼다던지. 파생 클래스 객체에 대한 포인터로 바꾼다던지?)- 눈으로 찾아내기 힘든 버그가 많다. static_castC 스타일 캐스트와 같다. const_cast상수성(constness)나 휘발성(volatileness)을 없애는 목적으로 사용하는 캐스팅 dynamic_cast상속 계층 관계를 가로지르거나 하향시킨 클래스의 타입으로 안전하게 바꿔주는 캐스팅제약 - 상속 계층 구조를 오갈때만 사용, 가상 함수가 없는 타입에는 적용할 수 없다.* 어떤 객체가 차지하고 있는 메모리의 시작부분을 찾는 데에도 쓴..
2015.07.25 -
객체 초기화(effective c++ 04)
서론C++의 객체 초기화는 중구난방!물론 규칙은 있다.C++의 C 부분은 사용하고 있으며 런타임 비용이 소모될 수 있는 상황이라면 초기화 된다는 보장이 없다.C가 아닌 부분은 때때로 달라진다.예시) 배열 vs 백터 모든 것을 해결하는 방법!모든 객체를 사용하기 전에 항상 초기화 하는 것. 생성자대입(assignment)과 초기화(initialization)을 구분하자. 1234567891011121314151617181920212223242526272829303132333435363738394041424344// ConsoleApplication7.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.//// 작성자 조민혁 #include "stdafx.h"#include class MyClass{p..
2015.07.24 -
프라우드넷
면접을 통해 알게 된 게임 서버 엔진이라고 한다. 개요프라우드넷(ProudNet)은 대한민국의 넷텐션에서 개발한 온라인 게임을 위한 네트워크 서버 엔진이다. 소규모 및 대규모 다중 사용자 온라인 게임을 위한 서버 및 네트워크 엔진이다. 특징사용 편의성보다는 성능, 안정성, 유연성에 초점이 맞추어져 있다.상용화 서비스중인 모바일 게임의 서버 하드웨어 1개당 동시접속자 6만명 이상을 처리하기도 했다. 엔진을 사용하는 게임[편집]《레이븐》 (2015년, 모바일) - 개발:STPlay,배급:CJ E&M《몬스터길들이기》 (2013년, 모바일) - 개발:씨드나인게임즈,배급:CJ E&M《세븐나이츠》 (2014년, 모바일) - 개발:넥서스게임즈《마비노기영웅전》 (2009년, PC) - 개발:넥슨, 배급:넥슨《라그나로크..
2015.07.24 -
동기화
동기화스레드나 프로세스간에 공유자원의 접근을 제어하는 방법. 커널 객체커널에서 관리되는 객체를 의미한다.종류로는 파일객체, 이벤트 객체, 뮤텍스 객체, 스레드 객체, 세마포어 객체 등이 있다. 커널 객체의 특징- 다른 객체와 접근하는 방법이 다르다. 실제로 생성하는 것은 커널이며 프로그래머는 요청을 하는 것이다.메모리 공간에 객체를 할당하고 이를 식별하기 위한 '핸들'을 프로그래머에게 반환해준다.- 소멸 시점이 다르다. 일반 객체는 프로세스가 소멸시 종료하지만커널 객체는 공유하고 있는 프로세스가 있다면 (usage count가 0이 아님) 소멸하지 않는다.- 보안 기술자(security descriptor)를 이용하여 보호받을 수 있다. 커널모드와 유저모드윈도우즈가 프로세스를 실행하는데 두 가지 모드로 ..
2015.07.23 -
Thread
정의스레드란 프로그램을 실행시키는 하나의 흐름에 대한 단위. *윈도우즈에서는 이 하나의 단위로 스케줄링이라는 작업을 한다. 스레드는 왜 쓰는가?- 계산이 오래 걸리는 연산을 수행하는 동안 다른 일을 하고 싶을 때.- 응답이 언제 올지 모르는 작업을 수행시켜놓고 다른 일을 하고 싶을 때.- 여러 개의 CPU를 이용하여 많은 작업을 동시에 처리하려고 할 때.- 같은 작업을 여러 개의 스레드로 동시에 처리 하고 싶을 때. C런타임 라이브러리1234567uintptr_t _beginthreadex( // NATIVE CODE void *security, unsigned stack_size, unsigned ( __stdcall *start_address )( void * ), void *arglist, unsi..
2015.07.23