본문 바로가기

Programing/C/C++

메모리의 누수 현상 전산학에서 메모리 누수(memory leak) 현상은 컴퓨터 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상이다. 할당된 메모리를 사용한 다음 반환하지 않는 것이 누적되면 메모리가 낭비된다. 일부 서적에서 메모리 손실이라는 용어로 뜻을 옮기기도 하지만[1] leak라는 표현은 단순히 잃는 것 이상의 개념이므로 누수라는 표현이 더 정확하다. 결과 프로그램을 실행하는 동안, 시간이 가면 갈수록 메모리를 더 많이 잡아 먹는다. (서버에서의 백그 라운드 작업에서 이러하기도 하지만, 특히 임베디드 장치에서도 여러 해 동안 이러한 문제가 지속되었다.) 컴퓨터 게임을 하거나 동영상의 프레임을 렌더링할 때 새로운 메모리가 수시로 할당된다. 프로그램을 종료해도 해당 프로그램은 실제로 종료되지 않고 공유 메모리.. 더보기
Struct와 typedef struct의 차이 struct tagFoo { int foo; }; struct tagFoo Alber; Alber라는 구조체가 생성된다. C++에서는 태그이름만으로 변수를 생성할 수 있지만, C에서는 struct 키워드를 생략하면 태그명만으로 변수를 정의할 수 없다. => tagFoo Alber; // C: 에러, C++ : 통과 C에서는 변수 선언이 가능한 키워드로 시작할 때에만 변수 선언을 인식할 수 있도록 되어 있다. 따라서, enum, union, struct등 사용자 정의 타입은 그냥 선언한 이름만 쓰면 변수 선언으로 인식할 수 없으므로, C컴파일러에게 어떤 타입인지를 알려주어야 한다. 매번 어떤 타입인지를 알려주는 것이 불편하므로, typedef를 이용하여 되었다. typedef struct tagFoo { .. 더보기
배열 배열의 크기 1차원 배열 : a[i] = i+1 2차원 배열 : a[i][j] = (i+1)(j+1) 3차원 배열 : a[i][j][k] = (i+1)(j+1)(k+1) 2차원 배열의 위치 -a[m, n]으로 정의된 2차원 배열에서 a[i, j]는 몇번째 요소인지 알아보는 법(b=지정된 기본 주소) -행 중심 순서 배열의 요소의 위치 : p = n(i-1)+j 기본 주소가 지정된 경우 : p=b(a)+n(j-1)+i-1 요소의 크기가 지정된 경우 : p=b(a)+(n(i-1)+j-1)*ElementSize -열 중심 순서 배열 요소의 위치 : p=(j-1)+i 기본주소가 지정된 경우 : p=b(a)+n(i-1)+j-1 요소의 크기가 지정된 경우 : p=b(a)+(m(j-1)+i-1)*ElementSize.. 더보기