일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 프로세스
- 언리얼 엔진5
- 언리얼엔진5
- effectivec++
- 자료구조
- 게임프로그래밍패턴
- 배열
- 디자인패턴
- 게임 개발
- Unreal
- CPP
- C언어
- 복사대입연산자
- BehaviorTree
- UE5
- 복사생성자
- 포인터
- C++
- Unreal Engine5
- 게임개발
- 생성자
- 언리얼엔진
- 언리얼5
- 언리얼
- 데이터구조
- Unreal Engine
- 소멸자
- 프로그래밍
- AI
- cpp개발
- Today
- Total
목록Computer Science (10)
리얼 개발

함수 호출 규약 ( Calling Convention ) 이란, 함수를 호출하는 방식에 대한 약속이다.함수를 호출하는데 뭘 약속까지 하냐? 라고 생각할 수도 있지만 함수 호출에는 꽤나 많은 일들이 일어난다.기본적인 레지스터 stack frame 등은 설명하지 않고 넘어가겠다. 함수 호출 규약으로 정하는건 다음과 같다.인자 전달 순서인자 전달 방법Stack Frame을 정리하는 방법 먼저 함수 호출 규약을 보기 전에 함수가 호출되면 컴퓨터에선 어떤 일이 벌어지는지 확인해보자.함수 호출 시 다음과 같은 일이 일어난다.call 명령어 실행push ip + jump [함수의 주소]atomic 명령어로 한 클락에 실행됨함수 프롤로그해당 함수의 stack frame을 만드는 일push ebp → mov ebp, e..
0. 소스 코드 작성 ( Source Code )C++로 소스 코드를 작성했다고 가정ex) main.c 1. 전처리 ( Preprocessing )컴파일러가 코드를 해석하기 전에 전처리기 ( preprocessor ) 가 동작하여 #include, #define 같은 지시문을 처리한다.#include 해당 헤더파일이 실제 코드로 변환됨.그 후 .i 파일이 생성됨.ex) main.c → main.i 2. 컴파일 ( Compilation )전처리된 .i 파일이 컴파일러를 통해 중간 언어인 어셈블리어로 변환됨.ex) main.i → main.s 3. 어셈블 ( Assembly )컴파일러가 생성한 중간 언(어셈블리 코드)를 어셈블러 ( Assembler ) 가 변환하여 바이너리 형태의 오브젝트 파일을 생성한다...
0. 이진 탐색 트리이진탐색트리란 이진탐색(binary search)과 연결리스트(linked list)를 결합한 자료구조의 일종이다. 이진탐색의 효율적인 탐색 능력을 유지하면서도, 빈번한 자료 입력과 삭제를 가능하게끔 고안됐다. 1. BST 기본 연산별 시간복잡도연산 평균 시간복잡도 최악 시간복잡도 (Skewed Tree)탐색 (Search)O(log N)O(N)삽입 (Insert)O(log N)O(N)삭제 (Delete)O(log N)O(N) 2. 시간 복잡도 분석1) 평균적인 경우 (Balanced BST) → O(log N)트리가 균형 잡힌 경우 (Balanced Tree), 즉 거의 완전 이진 트리라면:트리의 높이(h)는 O(log N)탐색, 삽입, 삭제 연산 모두 최대 log N 번만 비교하..
📌 해시 테이블(Hash Table) 개념해시 테이블(Hash Table) 은 키(Key)와 값(Value)을 매핑하여 저장하는 자료구조.즉, 특정 데이터를 빠르게 찾고, 삽입하고, 삭제하는 데 최적화된 구조.✅ 1. 해시 테이블의 개념1) 키(Key)와 값(Value)Key(키): 데이터를 찾기 위한 고유한 식별자 (예: 이름, ID, 해시값)Value(값): 키에 대응하는 저장된 데이터 📌 예시: 학생 성적 저장cpp복사편집hash_table["Alice"] = 95;hash_table["Bob"] = 88;hash_table["Charlie"] = 72; Key ValueAlice95Bob88Charlie722) 해시 함수(Hash Function)해시 함수는 Key를 특정한 인덱스(Index)..
소켓을 열어 간단한 웹 서버를 만든 뒤, 운영체제의 시스템콜을 통해 다수의 클라이언트 요청을 처리해보는 연습이다. fork()웹서버가 갖춰야할 중요한 특성 중 하나는 많은 클라이언트들의 요청들을 짧은 시간안에 잘 처리 하는 것 이다. sleep 시스템콜을 임의로 추가해서 처리 지연을 추가하고, 여러 탭을 통해 동시에 여럿 접속을 한다고 가정해보자. 그럼 나중에 시도된 탭은 앞선 요청들이 다 처리가 될 때까지 접속이 지연되거나, 최종적으로 접속에 실패하는 것을 볼 수 있다. 이를 fork() 시스템콜로 자식 프로세스를 만들어 처리할 수 있다. Linux 환경에서 진행했다.#include #include #include #include #include #include #include //wait 시스템콜을..

리스트란?data의 명단으로서 배열 또는 linked list에 저장하는 것이다. 배열은 저번 포스팅에서 다뤘으니 이번엔 Linked List에 대해 알아보겠다. Linked List의 종류는 다음 두가지로 나눌 수 있다.Singly Linked List (SLL)Doubly Linked List (DLL)이 둘은 다음 노드를 포인터로 연결해 데이터를 관리한다. C++ 은 STL에 list가 구현되어 있어 직접 구현하지 않고 간편하게 사용할 수 있다.#include using namespace std;int main(){ list List1; //비어있는 int형 List list List2; //비어있는 double형 List} Linked List의 구성요소는 다음과 같다.노드 : Linked Lis..

배열(Array)배열이란 같은 타입의 변수들을 묶어놓은 자료구조이다.//자료형 배열이름 [배열요소의 개수]//자료형 포인터 = new 자료형int b[50], d[5][10], *p, **q;C++ 코드로는 배열을 다음과 같이 나타낼 수 있다. 배열의 크기는 배열이 가질 수 있는 최대 변수 개수를 나타낸다.인덱스(Index)는 배열 내 변수들의 위치를 의미한다. 배열은 배열이름[Index]로 배열 내 데이터에 접근할 수 있으며 이때 Index의 범위는 0 ~ 배열의 크기 - 1 이다. 또한 배열의 자료형은 단순 묶여있는 데이터의 타입을 나타낼 뿐이다. 다음 코드를 통해 데이터의 타입에 따른 메모리 할당 크기를 확인할 수 있다.#include void main(){ char C_Array[100]; int..

알고리즘이란 컴퓨터로 문제를 해결하는 유한하고 단계적인 해법이다. 알고리즘의 조건으로는 다음 3개가 있다.유한성 (finite)명확한 답 (correct answer)input ≥ 0, output ≥ 1이러한 알고리즘들은 문제를 해결한 것에 그치지 않고 성능 분석이 필요하다. 알고리즘의 성능컴퓨터에서 성능은 복잡도로 표현할 수 있고, 복잡도는 시간과 공간으로 나눌 수 있다. 시간 복잡도는 시간 효율성을 의미하고, 공간 복잡도는 알고리즘의 메모리 효율성을 의미한다. 이러한 효율성은 데이터 개수(n)가 주어졌을 때 덧셈, 뺄셈, 곱셈같은 연산 횟수로 정해지며 성능함수로 나타낼 수 있다. ex)성능 함수의 특징으로는 상수는 무시하며 차수는 중시한다.위의 예시는 빅오(big-O) 표기법이며 추가로 빅오메가(b..

어떤 자료든 깔끔하게 정리되어 있으면 보기도 좋고 찾을 때도 편하다. 물건을 찾을 때 우리가 찾으면 안나오지만 어머니가 찾으면 나오지 않나! 어머니는 물건의 위치, 종류를 머릿속으로 항상 정리해놓으시는 것이다. 이렇게 물건과 같은 자료를 자신의 상황에 맞게 정리할 수 있도록 하는 것을 자료구조라고 하며, 컴퓨터 관련 분야에서 기본적이고도 필수적인 개념이다. 프로그래머는 문제를 더 효율적이고 효과적으로 해결하기 위해 자료구조에 대한 개념을 이해하고 활용하는 능력이 필요하다. 자료구조의 분류는 다음과 같이 정리할 수 있다.단순 구조자료값을 사용하기 위한 기본 형태로서 프로그래밍 언어에서 제공하는 정수, 실수, 문자, 문자열 등의 데이터 타입에 해당한다.선형 구조자료 사이의 관계가 1:1 관계인 순차 리스트,..

운영체제(Operator System)● 운영체제 - 컴퓨터라는 물건을 '잘' 사용하기 위한 소프트웨어 - 핵심 기능은 프로세스, 메모리, 입출력/파일 시스템 등을 관리하며 메모리에 상시 올라와있는 프로그램이다. - 컴퓨터의 한정된 자원(CPU, 메모리 등)을 누가, 언제, 얼마나 사용할지 결정하고 관리한다. ● 운영체제의 기능보안 관리외부 침입으로부터 보호네트워크 관리네트워크 입출력분산처리 관리장치 관리장치로부터 읽기장치에 쓰기장치 제어프로세스 관리프로세스 적재프로세스 실행프로세스 종료새 프로세스 생성프로세스 스케줄프로세스 동기화메모리 관리메모리 할당/반환메모리 보호디스크 영역으로 메모리 영역 확장 (가상 메모리)파일 시스템 관리파일 생성/삭제파일 열기/닫기파일 읽기/쓰기파일 저장 위..