본문 바로가기

Programming

(3)
[WinAPI]WinAPI프로젝트 생성 WinAPI(Application Programming interface)는 윈도우에서 사용되는 기능들의 집합을 WinAPI라고합니다 프로젝트 를 생성하는 방법부터 보여드리겠습니다(Visual Studio2019기준) [C++] -> [Windows] ->[데스크톱] ->[Windows 데스크톱 마법사] 데스크톱 애플리케이션 선택후 확인 // Win32apiFirstProject.cpp : 애플리케이션에 대한 진입점을 정의합니다. // #include "framework.h" #include "Win32apiFirstProject.h" #define MAX_LOADSTRING 100 // 전역 변수: HINSTANCE hInst; // 현재 인스턴스입니다. WCHAR szTitle[MAX_LOADSTRI..
메모리의 구조 Code, Data, Heap, Stack 프로그램이 실행되면 OS는 메모리에 프로그램이 돌아갈수있는 공간을 할당해주게됩니다 할당되어지는 공간은 Code,Data,Heap,Stack 이렇게 총 4가지 공간으로 나뉘어지게됩니다 Code 영역 프로세스가 실행할 코드와 매크로 상수가 컴파일 타임에 기계어의 형태로 저장되는 공간입니다 텍스트 영역이라고 부리기도합니다 프로그램이 시작하고 종료될때까지 메모리에 남아있습니다 Data영역 전역변수, static 변수, 배열, 구조체등이 저장되는 영역입니다 이영역또한 프로그램이 시작하고 종료될때까지 메모리에 남아있습니다 Stack 영역 함수의 호출과 관려있는 영역입니다 지역변수와 매개변수, 리턴값과같은 임시 메모리를 관리하는 영역입니다 우리가 흔히 알고있는 스택오버플로우 오류는 이 스택영역이 힙영역을 침범할때 발..
리터럴(literal)과 상수(constant) 리터럴(literal)과 상수(constant)둘은 둘 다 변하는 않는 값으로 같은 의미로 알고 있었지만 차이점이 존재합니다 상수는 변수중에 변하지 않는 변수를 의미합니다 프로그램이 실행되는 동안 메모리에 저장된 데이터의 값을 변경할 수 없습니다 리터럴 상수는 변수에 대입하는 데이터 그자체를 의미합니다 간단한 예제를 보여드리겠습니다 const int a = 1; 앞에 const 를 붙임으로써 a는 상수(constanst)가 됩니다 a에 대입되는 값 1이 리터럴(literal)입니다 상수는 변하지않는 변수를 의미하며(메모리 위치) 메모리 값을 변경할 수 없습니다 리터럴은 변하지않는 데이터(메모리 위치 안의 값)를 의미합니다 여담으로 define을 사용하는 것보다 const를 사용하는 것이 다 효율적이라고 ..