본문 바로가기

알고리즘/알고리즘_학교

3-1강 - 자료구조 & C, C++ programming 1 (call by reference, dynamic allocation)

1. Swapping Function

swap1 과 swap2는 동일한 기능을 합니다. (속도와 같은 세세한 사항은 다를 수 있어도 기능 자체는 동일합니다.)

 

2. Dynamic Memory Allocation

0) static memory

int staticArr[10];

프로그램이 종료될 때까지 메모리가 유지된다.

1) malloc의 기본형

int *dynamicArr = (int *)malloc(10 * sizeof(int));

- 위의 코드로 인해 10개의 int를 위한 memory가 할당된다. (그리고 이 array를 가리킬 pointer variable도 할당된다.)

- 중간에 메모리를 free로 해제할 수 있다.

cf> 심각한 오류가 있을 경우를 대비하는 법

if/else문으로 오류인 경우 else 부분에 위 함수를 삽입한다.

2) 1d array 동적 할당

1> C언어 vs C++

- 큰 메모리를 잡을 경우 메모리가 없을 경우에 대한 error message를 출력하도록 한다.

- 동적 할당 또한 프로그램 종료되면 메모리가 사라지지만 for문으로 메모리가 dangling 될 수도 있기 때문에 메모리를 쓰지 않는다면 free르 한다.

 

2> call by address

3> call by reference

 

3) 2d array 동적 할당

1> C++ 동적 할당

int **array2dB = new int*[N];

*array2db의 메모리를 할당할 **array2db를 new로 만들고

for (int i = 0; i < N; ++i) {
	array2dB[i] = new int[M];
}

array2db의 원소들 메모리를 할당할 *array2db를 new로 만든다.

 

2> C++ 동적 할당 해제

for (int i = 0; i < N; ++i) {
	delete[] array2dB[i];
}
delete[] array2dB;
array2dB = NULL;

 

3> call by address

4> call by reference