쥬신게임아카데미
-
메모리값 관련.의미..쥬신게임아카데미/궁금했던것 2015. 12. 29. 17:46
메모리값 의미 0xCDCDCDCD 힙에 할당된 메모리다.그러나 초기화 되지 않았다. 0xDDDDDDDD 힙에서 Free된 메모리이다. 0xFDFDFDFD "NoMansLand?"(아무도 여기에 있어서는 안된다. 즉 자동적으로 할당된 힙 메모리 바운더리에 놓여지는 값이다. 결고 overwrite되선 안되고, 만약 이 값이 변경되면 할당된 영역이상 쓰여진 것이다. 이럴 경우 VC에서 경고를 내준다. 0xCCCCCCCC 스택에 할당된 메모리이다. 그러나 초기화 되지 않았다. http://www.hackerschool.org/Sub_Html/HS_University/BOF/essential/PDF_Files/15.pdf
-
메모리 구조관련(미해결..)쥬신게임아카데미/궁금했던것 2015. 12. 29. 16:46
보통 Heap의 경우는 하위 주소에서 상위 주소쪽으로 변수가 채워지며, Stack의 경우는 상위 주소에서 하위 주소쪽으로 변수가 채워진다. 이는 프로그램 도중 Stack이 얼마나 필요할지 알 수 없으므로 Stack은 거꾸로 채워나간다 상위 메모리 주소 0xffff 하위 메모리 주소 0x0000 stack의 지역변수는 사용하고 소멸하므로 데이터 용량의 불확실성을 가지므로 밑에서부터 채워 올리고 heap은 위에서 부터 채워 내려진다. 용량의 불확실성은 컴파일러가 알아서 메모리영역을 선택(랜덤적) -stack영역에서의 주소값은 시작주소는 밑에서부터(먼저선언된 순서) 그다음 주소는 순서대로 정해진다. HEAP overflow-heap이 위에서부터 주소값을 채워져 내려오다가 stack영역을 침범하는 경우. STA..
-
소수점을 정수로 캐스팅 할때쥬신게임아카데미/궁금했던것 2015. 11. 26. 18:09
만약에 0.99를 정수로 캐스팅한다면 0이 되버린다. .99를 버리게 된다. 거의 1에 근접하니까..신경이 쓰인다 그래서 반올림을 하는데..0.6중 .6이 사라지는것보단 1이 되서 0.4를 더 얻는게 정확도면에선 더 낫지 않나..int Round(double _a) { //양수라면 0.5를 더하고나서 int로 캐스팅하고 소수점 아래는 버린다.. //음수라면 0.5을 빼야만한다. 그 이유는 int로 하는 캐스트는 0에 근접하는 방향으로 자르므로 //-4.4는 -5가 아니라 -4가 된다. -0.6은 0.5를 빼서 -1.1로 만들고 나서 잘라내면 된다. _a+=(_a > 0) ? 0.5 :-0.5; return static_cast(a); }
-
전방선언과 헤더파일 포함할때..쥬신게임아카데미/궁금했던것 2015. 11. 24. 01:49
중복된 헤더파일 포함에 대해선 아래 글부터 읽고 http://ekessy.tistory.com/20 전방선언 class A; 이런식으로 class B { public: A* ptr } B클래스 앞에 정의를 한다면 헤더파일을 포함하지 않고 포인터로 변수를 선언할 수 있는데.. 이게 중복된 인클루드를 피할 수가 있다.(A의 실제 헤더는 B.cpp에 포함해야한다) 만약에 #include"b.h" class A #include"a.h" class B가 있다면 보통은 중복을 안하려고 #pragma once를 붙이는데..(#ifndef ~ #endif나..) 그럼 #pragma once #include"b.h" class A {...} #pragma once #include"a.h" class B {..} 이렇게 ..
-
AppWizard 분석쥬신게임아카데미/MFC 2012. 12. 13. 23:28
AppWizard가 생성한 코드는 크게 세개의 클래스로 구성된다. 응용 프로그램 클래스 : 프레임 윈도우 생성, 메시지 루프 제공 프레임 윈도우 클래스 : 프레임 윈도우 기능 제공 뷰 생성 뷰 클래스 : 뷰 기능 제공 응용 프로그램 클래스 WinMain()함수의 역활을 한다. 메시지 루프를 제공하는 역활은 CWinApp::Run() 함수다. class Cmfctest3App : public CWinApp { public: Cmfctest3App(); // 재정의입니다. public: virtual BOOL InitInstance(); virtual int ExitInstance(); // 구현입니다. public: afx_msg void OnAppAbout(); DECLARE_MESSAGE_MAP() }..
-
맵 클래스와..MFC 전역함수쥬신게임아카데미/MFC 2012. 12. 13. 21:48
맵 클래스 맵은 데이터를 저장할때 키를 이용하여 저장위치를 결정하는 자료구조임. 키 값자체는 데이터 저장 위치가 아니므로 이값을 이용하여 일정한 계산을 한 후 저장 위치를 결정하는 함수가 필요한데.. 이를 해시함수라 한다.? 맵을 생성 및 초기화후 검색하는 과정은 다음과 같음. 1.맵객체를 생성 2. []연산자를 이용하여 초기화 이때 맵 객체[키] = 데이터 형식사용 3. 맵 객체.Lookup(검색키, 데이터를 저장할 변수) 형식으로 사용 CMapStringToSTring map; map["사과"]="Apple"; CString str; if(map.Lookup("딸기",str)) cout
-
MFC 기초 / 집합 클래스쥬신게임아카데미/MFC 2012. 12. 12. 23:15
CString 객체의 특성 1. 가변 길이 문자열을 지원한다. - 프로그램 실행 중에 문자열 길이를 자유롭게 바꿀수 있다??.. CRect, CPoint, CSize CTime 클래스는 절대적인 시간(예를 들면 현재시간)을 처리한다. CTime theTime; theTime = CTime :: GetCurrentTime(); //현재 시간을 구한다. @ Sleep()함수는 밀리초 단위 시간을 입력 받아 해당 프로그램을 대기시키는 역활을 한다. 대기시킬 일이 있을때..for문보다 훨씬 효과적이다. Sleep(0)은? 순간 같은 우선순위에 있는 다른 프로그램이 동작한다??....뭔소리래? 집합클래스 배열클래스 배열을 생성하는 순서는 다음과 같다. 1. 배열 객체를 생성한다. 2. SetSize()함수를 호출..
-
API 변수명명법쥬신게임아카데미/Windows API 2012. 11. 26. 20:08
윈도우즈 프로그래밍에서는 변수에 이름을 붙이는 방법이 있다. 대문자와 소문자를 적절히 사용해서 보기 편하게 해야한다. 헝가리식 표기법을 사용한다. 접두어 원래말 의미 cb Count of Bytes 바이트 수 dw double word 부호없는 long형 정수 h handle 윈도우, 비트맵, 파일 등의 핸들 sz Null Terminated NULL 종료 문자열 w Word 부호없는 정수형 i Integer 정수형 b Bool 논리형 데이터형 의미 BYTE unsigned char형 WORD unsigned short형 DWORD unsigned long형 LONG long과 동일하다. LPSTR char *와 동일하다. BOOL 정수형이며 TRUE, FALSE 중 한 값을 가진다 #include 에 ..