본문 바로가기
728x90
반응형

전체 글100

[자료구조] 배열(Array) 배열 -연속적인 메모리상에 동일한 타입(or 그의 파생타입)의 요소를 일렬로 저장하는 자료구조 -인덱스를 사용하여 직접적으로 엑세스 가능 -고정된 크기를 갖는다 -> 초기화시 해당 크기 그대로 유지 (중간에 새로 사이즈를 바꾸지 않는다면) 배열의 시간 복잡도 -배열의 사이즈와 상관없이 한 요소에 접근하는 시간은 인덱스 사용시 O(1) -특정 요소를 찾기 위해선 배열의 크기 n에 대하여 O(n) 배열 최적화 -정렬된 배열에서 값을 찾는 경우, Binary Search를 이용하여 O(long n) 가능 배열 사용법 -ex) 1부터 10까지 합을 출력하는 프로그램 class Program { static void Main(string[] args) { int[] numArray = new int[10]; in.. 2023. 6. 20.
댕글링 포인터 (Dangling Pointer) 댕글링 포인터? -적절한 타입의 유효한 객체를 가리키고 있지 않은 포인터를 의미 -즉, 해제된 메모리 영역을 가리키고 있는 포인터를 댕글링 포인터라고 한다. 코드를 통해 댕글링 포인터가 뭔지 자세히 이야기 해보자. 다음과 같이 코드를 작성하여 numA를 출력하면 문제없이 1이 출력되고, numA의 메모리가 해제될 것이다. int* numA = new int(1); std::cout 2023. 6. 19.
[백준] 다리 놓기 - DP 문제 보러 가기 해당 문제는 백준 DP 알고리즘 분류에서 Silver 5 문제입니다. 문제 설명은 생략하고 제가 생각한 풀이를 적어보겠습니다. 참고로, 저는 C++ 언어를 사용합니다. 같이 생각해보기? 왼쪽의 다리와 오른쪽 다리를 연결합니다. 또한 다리는 각 1대1로 대응되어 건설됩니다. 이때 다리 건설은 서로 겹치지 않는다고 했으니, 무조건 1대1 대응이 확정입니다. 그렇다면 다리의 수는 항상 오른쪽 구역이 더 많은데 서로 중복되는게 없어야 한다? 즉 순서는 상관 없지만, 중복되는 것을 빼고 계속 뽑는다는 의미겠죠? 예, 조합을 의미합니다. 오른쪽 기준 내가 왼쪽 구역에서 다리를 선택하겠어! 라는 생각으로 문제를 접근해봅시다. 시작 전에 조합 공식 기억나시나요? 여기 있습니다!! 출처는 인터넷 ㅎ 피보.. 2022. 11. 12.
Coroutine 이야기 C# 에서의 Coroutine - 특정 위치에서 실행을 일시 중단하고 다시 시작할 수 있는 진입점을 허용함 - 처리 도중 취소가 가능하다 - 하나의 Object로 Single Thread에서 더욱 효율적으로 사용하기 위해 만들어진 것 - 병렬 처리가 아닌 동시성 처리다 - Why use? 하나의 스레드에서 오랫동아 처리되는 작업 진행시 스레드가 대기상태가 되는데, 대기 상태에 진입한 스레드를 깨워서 다른 작업 수행할 수 있게 하여 효율성 극대화 하려고 - 가만 보면 병렬처리하는 것 과 매우 비슷해 보이나, 서로 다름을 인지하고 있자!! Unity에서의 Coroutine - 기본적으로 C#을 사용하기에 위 내용은 기본 - Unity에선 StartCoroutine을 통해 코루틴을 실행! 이건 엔진 내부에서 .. 2022. 11. 11.
Coroutine - 가비지 줄이기 [GC가 도는 이유 및 최적화 아이디어 소개] Unity에서 StartCoroutine 호출 시 Unity 엔진 내부에서 인스턴스가 생성되면서 GC가 도는데, 사실 엔진 자체에서 제공하는 기능이기에 이를 완벽하게 GC호출이 안되겐 할 수 없으나, yield문 return시 new 구문에서 YieldInstruction이 생성되어 사용되면서 가비지가 생성되니 YieldInstruction을 미리 캐싱해두는 방식을 사용하여 최적화 하는게 중요합니다! [코드 및 설명] # 우선 이 코드는 Unity 공식 포럼에 나온것과, 다른 분들이 짜놓은 코드를 참고하여 저의 경우 WaitForSeconds를 자주 사용하여 이 기능 위주로만 사용하게 살짝 바꿨습니다. 아래 출처 표기했습니다. namespace Cashing.. 2022. 11. 11.
garbage_collection Study about garbage collection 가비지 컬렉션은 자동 메모리 관리를 해줌 CLR 내에서 가비지 컬렉터가 가비지 컬렉션을 담당함 가비지 컬렉터도 소프트웨어로 컴퓨팅 자원을 사용함 CLR에서 메모리에 객체 할당 방법 관리되는 힙을 위한 메모리 공간 확보 확보한 공간 첫 번째 공간에 다음 객체를 할당할 메모리의 포인터를 넣는다. 값 형식의 객체는 스택에 할당되어 코드블럭이 끝나면 메모리 소멸 참조 형식의 객체는 힙에 할당되어 코드블럭에 상관없이 존재 static void Main(string[] args) { if(true) { object a = new object(); } } if 블로내 참조 a 메모리가 있고 객체화 a는 힙에 저장되어 있다. if문이 끝나면 스택 a 메모리가 소멸.. 2021. 8. 29.
728x90
반응형