전체 글
-
함수 호출 규약 - cdecl, stdcall카테고리 없음 2024. 6. 2. 21:34
스택스택은 데이터를 후입선출(LIFO, Last In First Out) 방식으로 저장하는 메모리 구조입니다. 일반적으로 프로그램의 실행 중에 함수 호출과 반환을 관리하기 위해 사용됩니다. 스택의 주요 특징은 다음과 같습니다:후입선출: 마지막에 추가된 항목이 먼저 제거됩니다.푸시(Push): 데이터를 스택의 최상위에 추가하는 작업입니다.팝(Pop): 스택의 최상위에서 데이터를 제거하는 작업입니다.스택 포인터 레지스터인 rsp는 항상 스택의 최상단을 가리킨다.스택 프레임스택 프레임은 함수 호출 시 함수의 실행 컨텍스트를 저장하기 위해 스택에 생성되는 메모리 블록입니다. 각 함수 호출마다 새로운 스택 프레임이 생성되며, 함수가 반환되면 해당 스택 프레임이 파기됩니다. 스택 프레임은 다음을 포함합니다:매개 변..
-
GPGPU카테고리 없음 2024. 5. 31. 17:49
정의 - GPGPU(General-Purpose computing on Graphics Processing Units)는 그래픽 처리 장치(GPU)를 일반적인 연산 작업에 활용하는 기술 - CPU가 맡았던 연산을 GPU에도 사용해 연산 속도를 향상 시키는 기술 GPU란?그래픽 연산을 수행하기 위한 장치.수천 개의 작은 코어를 가지고 있어 병렬 연산에 강함.GPGPU란?GPU를 그래픽 연산이 아닌 일반 연산에 사용하는 것.과학 계산, 기계 학습, 데이터 분석 등에 활용.장점:병렬 처리: 많은 연산을 동시에 처리할 수 있음.속도: CPU보다 특정 작업에서 훨씬 빠름.효율성: 에너지 효율이 높음.단점:복잡성: 프로그래밍이 복잡함.제한된 메모리: GPU 메모리가 제한적.특정 작업에 최적화: 모든 작업에 적합하지..
-
해싱 테이블카테고리 없음 2024. 5. 29. 21:21
해싱이란?- 해싱(Hashing)은 데이터를 효율적으로 저장하고 검색하기 위해 사용되는 기술- 해싱은 입력 데이터를 고정된 크기의 고유한 해시 값으로 변환하는 과정 해시 함수(Hash Function):입력 데이터를 고정된 크기의 해시 값으로 변환하는 함수이다.해시 함수는 일반적으로 빠르고 효율적으로 계산될 수 있다.이상적인 해시 함수는 서로 다른 입력 데이터에 대해 서로 다른 해시 값을 생성하여 충돌을 최소화한다.해시 값(Hash Value):해시 함수의 출력으로, 입력 데이터를 고정된 크기의 값으로 변환한 결과이다.해시 값은 해시 테이블에서 데이터가 저장될 위치를 결정하는 데 사용된다.해시 테이블(Hash Table):해시 값을 사용하여 데이터를 저장하고 검색하는 데이터 구조이다.순차검색 해시테이..
-
C++_ThreadC++ 2024. 5. 24. 15:08
bind(MultiThread1, placeholders::_1)bind는 함수 객체를 생성하는 유틸리티 함수이다. 이 함수는 특정 인자들을 가지고 함수 호출을 미리 설정할 수 있게 해준다.MultiThread1는 바인딩할 실제 함수입니다. 이 함수는 하나의 int형 인자를 받아들이는 함수어야 한다.placeholders::_1는 bind가 생성하는 함수 객체가 호출될 때 전달될 첫 번째 인자를 나타낸다. 이 자리 표시자는 bind가 반환하는 함수 객체의 인자와 대응한다.t.join()와 t2.join()t.join()와 t2.join()은 각각의 스레드가 종료될 때까지 메인 스레드가 대기하도록 한다. 이 호출이 없으면 메인 스레드는 스레드들이 종료되기 전에 종료될 수 있다.#include #includ..
-
C++_Lambda카테고리 없음 2024. 5. 20. 16:49
[#include ]C++에서 functional 헤더는 표준 라이브러리의 일부로, 함수 객체, 람다 표현식, 바인더, 함수 포인터 등과 같은 함수형 프로그래밍을 지원하는 도구들을 제공바인더 (std::bind)함수 호출을 더 쉽게 하고, 부분적으로 매개변수를 바인딩하여 새로운 호출 가능 객체를 생성합니다.[#include ]람다와 스레드를 결합하여 사용한 이유는 스레드의 작업을 간편하게 정의하고 실행하기 위함이다.std::thread t([=](int x) //왜 스레드랑 결합해서 사용?{ //람다 본문 for (int i = 0; i [람다 본문]람다 바깥쪽 범위에서 캡쳐된 변수 [캡쳐절]들이 본문 안에 들어갈 수 있다.파랍미터들 (int x)로컬에서 선언된 변수 => for문안 람다안에..
-
#인덱서카테고리 없음 2024. 5. 19. 03:55
인덱서 지원배열과 딕셔너리 및 리스트는 인덱서를 이용하여 편리하게 키나 인덱스에 해당하는 컬렉션 항목을 얻거나 설정할 수 있는 방법을 지원한다.인덱서 사용 형식- 인덱서의 선언은 속성을 선언하는 방법과 매우 비슷하다. 속성의 이름 대신 this 키워드와 뒤이어 대괄호로 감싼 매개변수 목록을 사용한다는 점만 차이점이다. using UnityEngine;public class Test_Indexer : MonoBehaviour{ private class NumberCollection { private T[] array = new T[10]; public T this[int i] //this 키워드 사용 , 배열을 쓰면 배열 번호가 int i로 들어옴 { get { r..
-
C++_DeepCopy카테고리 없음 2024. 5. 15. 15:35
복사생성자의 사용 이유- 복사 생성자는 객체의 복사본을 생성할 때 호출됩니다. C++에서는 객체를 다른 객체로 초기화할 때 (예: Character character2(character);), 함수에 객체를 값으로 전달할 때, 함수에서 객체를 값으로 반환할 때 등 다양한 상황에서 사용 - Character character2(character) 부분은 Character 클래스의 복사 생성자 호출하며 , 여기서 character2 객체는 character 객체의 복사본으로 생성한다.- 아래의 코드처럼 복사생성자 정의가 없으면 코드가 컴파일러에 의해 자동으로 생성된 디폴트 복사 생성자를 사용하게 된다. 이렇게 디폴트로 생성된 복사 생성자는 멤버 변수를 단순 복사(shallow copy)하는 동작을 수행한다...
-
#Structure카테고리 없음 2024. 5. 12. 17:49
구조체- C#의 복합 데이터 형식에는 클래스 말고도 구조체도 있다.- 구조체는 크기가 작고 간단한 데이터 구조를 표현하는 데 효과적이다.- 스택에 저장되어 값으로 복사되기 때문에 독립적인 복사본을 제공하며, 메모리 관리와 성능 측면에서 유리하다.- 데이터와 기능을 함께 동시에 묶는 것- 생성자에서만 초기화 가능하다. 구조체 사용 형식- Struct 구조체_이름 클래스 / 구조체- 클래스는 실세계의 객체를 추상화하려는 데 그 존재의 이유가 있지만 , 구조체는 데이터를 담기 위한 자료구조로 사용된다.- 형식클래스는 참조 형식으로 힙에 할당된다.구조체는 값 형식으로 스택에 할당된다.- 복사클래스의 복사는 얕은 복사이다.구조체는 깊은 복사이다.- 인스턴스를 생성하는 경우클래스는 new 연산자와 생성자가 필요하다..