본문 바로가기
728x90

분류 전체보기72

[C#] 참조 전달(pass by reference) ref, out, in ref, out, in은 모두 C#에서 메서드로의 인자 전달에 사용된다. 3가지 모두 참조 전달(pass by reference) 방식으로, C나 C++에서 포인터나 참조를 직접 전달하는 방식과 유사하다.ref변수를 참조로 전달하며, 호출하는 쪽에서 반드시 초기화되어 있어야 한다.메서드 내에서 해당 변수의 값을 읽고, 수정하여 반영할 수 있다.선언과 호출에서 모두 ref 키워드가 붙여져서 사용되어야 한다.void Modify(ref int number){ number += 10; // number의 참조가 와서 변경하면}int a = 5;Modify(ref a);Console.WriteLine(a); // 결과로 원래 숫자에 15가 반영된다out변수가 참조로 전달되지만, 초기화되어 있을 필요가 없다.. 2025. 4. 30.
[C++] 스마트 포인터(unique_ptr, shared_ptr, weak_ptr) RAII 패턴C++에서 자주 사용되는 패턴으로, 객체가 어떠한 경우에서든 사용되는 범위를 벗어나면 소멸자가 불린다는 점을 이용한 패턴객체의 자원 할당은 생성자에서, 해제는 소멸자에서 관리해줌으로써 만약 delete를 하지 않거나 오류 등의 문제로 인해 범위를 벗어난 경우, 자동으로 자원을 해제할 수 있게 하는 패턴이다.이 글에서 설명할 스마트 포인터들은 RAII 패턴에 기반하여 작성되었다.unique_ptr (단독 소유)객체의 소유자를 하나만 갖게 하는 스마트 포인터소유권 이전은 move semantics를 통해서만 가능(std::move)소멸 시 자동으로 delete 호출(unique_ptr이 소멸될 때 그 것이 가리키는 객체에 대해 delete를 호출해줌)#include using namespace .. 2025. 4. 30.
[C# / Unity] C#과 Unity에서의 GC(Garbage Collection) C#에서의 GC기본적으로 C#은 .NET Framework 기반의 언어이기 때문에 .NET의 런타임 환경인 CLR(Common Language Runtime)이 GC를 담당하게 된다.(.NET과 CLR에 대한 정리) 2024.11.06 - [언어(C, C++, C#)] - [C#] .NET, 컴파일 과정, CLS, CTS, CIL, CLI, CLR, JIT 컴파일 이 때, GC는 heap영역의 메모리를 관리하게 된다.두 가지 로직을 베이스로 사용하는데 첫 번째는 세대별 가비지 컬렉션이고, 두 번째는 mark-and-sweep과 compaction이라는 정렬 과정이다.추가적으로 할당 받을 메모리의 크기에 따라 저장될 메모리 공간을 SOH, LOH로 나누게 된다.세대별 가비지 컬렉션GC(Garbage Col.. 2025. 4. 11.
[언어] 컴파일 언어, 인터프리터 언어, 하이브리드 언어 컴파일 언어코드 실행 과정소스 코드를 컴파일러가 읽어 전체를 기계어로 번역해 실행 파일을 생성한다.실행 파일을 독립적으로 실행한다.(컴퓨터가 직접 실행할 수 있다.)장점빠른 실행 속도(성능) : 실행 파일이 이미 기계어로 번역되어 있어 실행 시 번역이 필요없다.에러 검출 : 컴파일 과정에서 문법적 오류를 사전에 모두 검출해준다.자원 관리 : 메모리 관리 및 시스템 자원 사용이 효율적이다.보안 : 컴파일된 코드는 기계어이기 때문에 사람이 이해하기 어려워 보안과 안정성이 높다.단점개발 속도 : OS 별로 컴파일 과정이 필요하기 때문에 개발 주기가 길어질 수 있다. 또, 수정 시에 재컴파일이 필요하다.플랫폼 종속성 : 특정 운영 체제나 하드웨어 환경에 맞게 컴파일된 실행 파일은 다른 환경에서 동작하지 않는다... 2024. 12. 7.
[컴퓨터 그래픽스] 그래픽 렌더링 파이프라인 그래픽 렌더링 파이프라인은 GPU에서 일어나는 실제로 화면에 그래픽이 어떻게 표시될지 계산하고 출력하는 과정이다.렌더링 파이프라인에서 거치는 과정은 다음과 같다.Vertex ShaderRasterizerFragment ShaderOutput Merger이 중, shader가 붙어있는 두 가지는 프로그램으로 사용자가 직접 코드를 작성하여 파이프라인에 제공해야 하는 것이고, rasterizer와 output merger의 경우에는 하드웨어로 고정된 단계로 GPU에서 알아서 계산이 되어 결과를 반환하게 된다. 오늘은 각각이 어떤 역할을 하는지에 대해서 간략하게 정리를 해볼 것이다.Vertex Shader이름에서도 짐작할 수 있듯이 vertex, 점과 관련된 계산을 하는 단계이다. 그래픽 공간에 있는 모든 물체.. 2024. 11. 23.
[Unity] MonoBehaviour란 MonoBehaviour에 대해 알아보기 전, 유니티의 동작 원리부터 알아보도록 하자.Unity의 원리유니티는 컴포넌트 기반 아키텍처를 사용한다. 게임 오브젝트는 여러 컴포넌트로 구성되어 있으며, 컴포넌트는 특정 기능을 담당한다.MonoBehaviour을 상속받은 스크립트는 게임 오브젝트의 동작을 정의하는 주요 컴포넌트이다.게임 오브젝트(GameObject) : 씬 내의 모든 개체를 의미한다. 각 게임 오브젝트는 여러 컴포넌트를 가질 수 있다.컴포넌트(Component) : 게임 오브젝트에 붙여서 특정 기능을 수행하는 모듈씬(Scene) : 게임의 각 단위를 구성하는 환경으로, 게임 오브젝트와 컴포넌트들이 배치되어 있다.즉, 유니티는 컴포넌트와 게임 오브젝트를 이용하여 게임을 만드는 엔진으로, OOP의 .. 2024. 11. 19.
728x90