분류 전체보기

    C++ NULL과 nullptr의 차이

    1. int* 포인터에 정수 값 대입 int Integer, *Pointer; void print(int ptr) { Integer = ptr; cout

    C++ vector사용법 및 설명 (장&단점)

    vector vect; // vect는 stack, 각 원소들은 heap vector *vect = new vector; // vect와 각 원소들 모두 heap vector vect; // vect는 stack, 각 원소들은 heap 그리고 가리키는 대상들은 heap 또는 stack https://stackoverflow.com/questions/8036474/when-vectors-are-allocated-do-they-use-memory-on-the-heap-or-the-stack 속도적인 측면에서 array(배열)에 비해 성능은 떨어지지만 메모리를 효율적으로 관리하고 예외처리가 쉽다는 장점이 있다. Vector의 초기화 vector 변수명 백터 생성 vector 변수명(숫자) 숫자만큼 백터 생성 ..

    C# 가변 길이 배열 (Variable Length Array)

    가변 길이 배열은 2차원 배열에서 각각의 첫번째 원소에 다른 길이의 배열을 담는 것이다. C#은 C++과 달리 고정 길이 배열은 [ 행 크기 , 열 크기 ] 이다. [][]는 가변 길이 배열을 뜻한다.한 가지 특이사항이라면 foreach 돌릴 시 고정 길이 배열은 전체의 인덱스를 탐색한다, 반대로 가변 길이 배열은 순차적으로 행에 해당되는 원소에만 접근한다. using System; using System.Collections.Generic; using System.Runtime.InteropServices; namespace ConsoleApplication1 { public class Parent { public static readonly int Height = 3; public static rea..

    C++ 가변 길이 배열 (Variable Length Array)

    가변 길이 배열은 2차원 배열에서 각각의 첫번째 원소에 다른 길이의 배열을 담는 것이다. 아래는 C 스타일이다. #include using namespace std; int main() { // ------- 고정 길이 배열 ------- int arr[10]{ 5 }; for (int i = 1; i < 10; i++) arr[i] = arr[i - 1] + 5; // ------- 가변 길이 배열 (C 스타일 배열 사용) ------- int arr2[3]{ 1, 2, 3 }; int arr3[5]{ 4, 5, 6, 7, 8 }; int* variableArr[3]; *variableArr = arr; *(variableArr + 1) = arr2; *(variableArr + 2) = arr3; c..

    C/C++ 포인터 역참조 (deference)

    배열의 포인터는 크게 *(단일 포인터) 또는 **(이중 포인터)로 받을 수가 있다. 역참조는 해당 포인터가 자기 자신을 가리키게끔 하는건데 예시로 *ptr이면 ptr-> 성질과 비슷하다, 즉 null 포인터일 시 당연히 뻥난다. *ptr는 arr의 시작 주소를 받아내고 전체 배열의 접근이 가능하다. *ptr2는 단일 주소 포인터다, 오직 할당받은 &배열[인덱스]에만 접근 가능하다. *(ptr3)[10] 이건 이중 포인터로 받아내는 것이다, 2차원 배열 또는 포인터 배열로 접근할 수가 있다. #include using namespace std; int main() { int arr[10]{ 5 }; for (int i = 1; i < 10; i++) arr[i] = arr[i - 1] + 5; int* p..

    [Unreal] FTimerManager 타이머 설정

    #include "TimerManager.h"를 추가해주면 된다. 생성자가 FTimerManager() = delete;로 되어있기 때문에 인스턴스화 시킬 수 없다. 각 인자 값으론 FTimerHandle 쓰여질 핸들 InRate 반복될 횟수 inbLoop 무한반복 여부 InFirstDelay 첫 발동까지 대기시간 const FTimerDelegate&, const FTimerDynamicDelegate&, TFunction&& 함수 포인터 UserClass* 타이머를 적용할 대상 오브젝트 FTimerHandle handle; float rate = 1.f; float inFirstDelay = 0.f; bool bLoop = false; FTimerDelegate timerDele; FTimerDyna..

    [Unreal] 화면 정중앙 조준선 위치 기반 레이캐스트

    FVector startPos = 소환위치(FVector); float maxRange = 10000.f; // 카메라 기반으로 구하기 auto cameraManager = UGameplayStatics::GetPlayerCameraManager(GetWorld(), 0); auto traceStartPos = UKismetMathLibrary::ProjectPointOnToPlane(cameraManager->GetCameraLocation(), startPos, cameraManager->GetActorForwardVector()); auto traceEndPos = traceStartPos + (cameraManager->GetActorForwardVector() * maxRange); // 게임 ..

    [Unreal] 문자열 변환 - FName, FText, FString

    문자열 클래스간 변환 변환 형식 변환 방법 FName → FString TestString = TestName.ToString(); FName → FText TestText = FText::FromName(TestName); FString → FName TestName = FName(*TestString); // 손실 위험 있음. FName이 대소문자 구분 없음 FString → FText TestText = FText::FromString(TestString); FText → FString TestString = TestText.ToString(); // 안전하지 않음. 언어 변환시 손실 위험 때문 FText → FName FText → FString -> FName // 직접 변환 없음 // 손실 위..

    [Unreal] FVector과 FRotator간 변환

    // FVector > FRotator FRotator::MakeFromEuler(FVector); FVector 변수.Rotation(); // FRotator > FVector FRotator 변수.Vector();

    CPU 32비트 64비트와 두 프로그램의 차이

    CPU 32비트와 64비트 차이 컴퓨터에는 32비트, 64비트 두 가지 유형의 프로세서가 존재한다. 이것은 컴퓨터 프로세서가 CPU 레지스터에 전달할 수 있는 메모리의 양이다. 즉 32비트보다 64비트 프로세서가 데이터 처리량이 높기 때문에 더 우수한 성능을 보여준다. 32비트 232개의 메모리 주소, 즉 4GB((4,294,967,296바이트) 정도의 물리 메모리(RAM)에 전달할 수 있다. 64비트 264개의 메모리 주소, 실제로 18GB (18,446,744,073,709,551,616)바이트 또는 17,179,869,184GB(16EB) 정도의 물리 메모리(RAM)에 전달할 수 있다. 듀얼 코어, 쿼드 코어, 6 코어, 8 코어 버전의 홈 컴퓨팅으로 제공될 수 있다. 속도 향상. 멀티태스킹에서 많..