전체 글330 CPP_1. AssortRock 5일차 오프라인 수업_220913 메모리 할당과 해제에 대한 이야기 C++의 장점은 메모리를 직접 할당하고 해제할 수 있는 것. 자바나 C#의 경우 가비지컬렉터가 관리해주는데 할당/해제에서 끊기는 문제가 있다. 그래서 유니티에서는 메모리풀이라는 기술을 쓴다. 동적할당에 대한 이야기 사용자가 필요한 메모리가 얼만큼인지 알 수 없다. 스택의 크기는 정해져 있다. (VS 기준 기본 1MB) MB 단위로 스택이 정해진다. 스택(지역변수), 데이터영역(전역, 정적 변수) 이 친구들은 프로그램이 실행될 때 한번만 정해짐 따라서 프로그램 동작 중에 메모리를 필요한 만큼 할당할 수 있는 방법 필요 그 방법이 힙 메모리에 메모리를 할당하는 동적할당 기법이다. (malloc, free, new, delete) C언어에서의 동적 할당 malloc (memo.. 2022. 9. 15. 1주차-2. 10988번 팰린드롬인지 확인하기 10988번 팰린드롬 문제 문제의 요지는 단순하게 주어진 문장이 팰린드롬인지 확인하는 문제였다. 단어의 길이가 주어져서 배열의 사이즈를 가늠할 수 있다. 먼저 무작정 풀어보기 #include using namespace std; int main() { char chArr[101]; cin >> chArr; size_t length = 0; char* p = chArr; while (*p != '\0') { length++; p++; } for (int i = 0; i < length / 2; i++) { if (chArr[i] != chArr[length - i - 1]) { cout 2022. 9. 13. 4-2. Process ID & Handle PROCESS ID란? 프로세스가 만들어지면 2개의 핸들이 생성된다. PROCESS KERNEL OBJECT (PKO), THREAD KERNEL OBJECT (TKO) TKO가 생기는 이유는 프로세스 생성 시 주 스레드가 자동으로 생성되기 때문 PID를 구하는 방법 1. 자신의 프로세스 ID 구하기 GetCurrentProcessId() : 내 PROCESS ID 구하기 GetCurrentThreadId() : 내 THREAD ID 구하기 #include #include using std::cout; using std::endl; int main() { DWORD pid = GetCurrentProcessId(); cout 2022. 9. 13. 4-1. Kernel Object 윈도우 핸들 A라는 프로세스가 윈도우를 만들어서 3000번이라는 핸들을 받았다고 가정한다. 이 3000번이라는 번호를 B 프로세스에게 전달한다고 했을 때 B 프로세스가 A 프로세스가 만든 핸들을 조작할 수 있을까? OK 윈도우 핸들은 모든 프로세스에 개방적이다. 그렇다면 CreatePen의 반환값인 Pen 객체는 어떨까? CreatePen의 반환값으로 나온 Pen도 같은 방법으로 B 프로세스에 전달한다면? B 프로세스가 A 프로세스가 만든 펜의 핸들을 조작할 수 있을까? NO GDI 핸들은 그걸 만든 하나의 프로세스만 사용할 수 있다. 그럼 어떤건 되고 어떤 건 안되는데 이걸 어떻게 판별해야 할까? 이 접근권한은 Object Category라는 카테고리로 분류된다. Object Category User .. 2022. 9. 13. 이전 1 ··· 72 73 74 75 76 77 78 ··· 83 다음