본문 바로가기

C++17

[C++] 메모리 누수 (memory leak)와 CRT 라이브러리 메모리 누수 동적할당을 사용하여 메모리를 사용한 다음 이 메모리를 해제해주지 않으면 계속해서 남아있게 되고 나중에 실제 프로그램이 실행되는 중에 문제가 발생할 수 있습니다. 이렇게 동적할당으로 메모리를 할당하고 메모리를 해제하지 않는 경우는 메모리 누수(memory leak)이라고 합니다. 하지만 컴파일러는 이를 error로 생각하지 않기 때문에 메모리 해제를 하지 않았다고 해서 error를 띄어주지 않습니다. 따라서 메모리 누수로 인해 문제가 발생하면 이를 찾기가 어렵습니다. 따라서 이런 경우에는 CRT 라이브러리를 사용하여 메모리 누수를 찾아야 합니다. CRT 라이브러리 메모리 누수를 탐지하기 위해서는 헤더를 포함해야 합니다. 그리고 코드 실행의 맨 앞에 _CrtSetDbgFlag(_CRTDBG_AL.. 2018. 1. 24.
[C++]new delete 동적할당 지역변수 우리가 일반적으로 사용하는 지역 변수 선언을 정적으로 선언하였다고 한다. 즉, 다음과 같은 변수와 배열의 선언을 정적으로 선언하였다고 한다. int nData = 0; int arData[10] = {}; 자료형과 배열의 크기에 맞춰서 메모리 영역에 공간을 할당해 주는 것이다. 이런 지역 변수가 할당되는 메모리의 영역을 스택(stack) 영역이라고 하며 선언된 지역 내에서만 사용가능하며 선언된 지역을 벋어나면 스택 영역에서 사라지게 된다. 이러한 지역변수의 경우에는 컴파일 타임에 크기를 결정하기 때문에 런 타임 시기(프로그램이 실행되고 있는 중)에 지역 변수를 새로 생성하고 사용하는 것은 불가능하다. 따라서 런 타임 시기에 메모리를 잡아서 사용하기 위해서는 동적할당을 사용해야 한다. ***** .. 2018. 1. 24.