std::bad_alloc 알고리즘 문제를 해결하다가 위 오류를 마주하였다. 아마 vector에 너무 많은 경우를 집어 넣어서 생긴 것 같다. std::bad_alloc 오류는 일반적으로 힙 메모리가 부족할 때, 더 이상 메모리를 동적으로 할당할 수 없을 때 발생하는 현상이라고 한다. 일반적인 에러 원인은 할당된 메모리를 반납하지 않았거나, 잦은 힙 메모리 할당/삭제에 의한 메모리 단편화가 많이 발생되어 원하는 크기의 메모리를 할당할 수 없을 때 발생할 수 있다. 메모리 단편화는 시스템 성능에도 영향을 미칠 수 있으므로 될 수 있으면, 할당할 메모리의 크기가 작고 반복적으로 사용되는 경우에는 스택 메모리(배열 등)에 할당하여 사용하는 것이 좋다는 답변을 보았다. 메모리 관리를 잘해서 안마주치는 게 제일..
메모리

컴퓨터의 핵심 부품 4가지 컴퓨터의 핵심 부품 4가지에 대해 러프하게 정리해보았다. 컴퓨터의 핵심부품1 메모리(주기억장치) - 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다. - 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 한다. - 메모리는 실행되는 프로그램의 명령어와 데이터를 저장한다. - 메모리에 저장된 값의 위치는 주소로 알 수 있다. 컴퓨터의 핵심부품2 CPU (central processing unit) - CPU는 메모리에 저장된 명령어를 읽고 해석하고 실행하는 부품이다. - CPU 내부에는 ALU, 레지스터, 제어장치가 있다. (실제로는 더 많은 부품이 있는 매우 정교한 부품이지만, 크게 3가지로 볼 수 있다) - ALU(산술 논리 연산 장치): 계산기 - ..
쓰레기 수집 (Garbage Collection) 프로그래밍을 하다가 웬 쓰레기 수집...인가 싶었지만 개념을 듣고 보니 이것만큼 이름을 잘 지은 것도 없는 것 같다. 쓰레기 수집(혹은 가비지 컬렉션)은 Javascript의 메모리 관리 방법으로, JavaScript Engine이 자동으로 데이터가 할당된 메모리에서 더이상 사용되지 않는 데이터를 해제하는 것을 말한다. 이 가비지 컬렉션은 사람이 직접 강제 실행하거나 관리할 수 없다고 한다. 여담으로, C나 C++은 가비지 컬렉션 없이 손으로 직접 메모리 관리를 해주어야 한다는데 얼마나 헬일지 상상도 안간다. C나 C++ 다루는 사람에게 경의를 표한다. 장점 메모리 관리를 철저하게 해줄 필요는 없다. 단점 가비지 컬렉션이 언제 일어나는지 알 수 없다. 이..