티스토리 뷰
동적할당
c
▶1차원 배열 동적할당
int *k;
int input;
scanf("%d" , &input);
k = (int *)malloc(sizeof(int)*input);
▶2차원 배열 동적할당
int **k;
int input;
scanf("%d" , &input);
k = (int (*)[ ])malloc(sizeof(int)*10); // 행의 크기
k[0] = (int *)malloc(sizeof(int)*input); // 열의 크기
c++
▶일반 변수
int *k = new int; // 동적으로 int 객체 할당
*k = 10;
delete k; // 동적으로 int 객체 제거
▶1차원 배열 동적할당
int size;
scans("%d", &size); // size = 20
int *arr = new int [size]; // 동적으로 20개의 메모리 할당
delete [ ] arr; // 동적으로 배열 제거
▶2차원 배열 동적할당
//int 형 2차원 배열 동적 할당
int ** alloc2(int row, int cols) // row : 행, cols : 열
{
if(row<=0 || cols <=0) return NULL;
int **arr = new int*[rows]; // 포인터 변수를 저장할 배열 = 각 행에 해당하는 배열의 주소를 저장하기 위한 배열
// 행렬의 각 행에 실제 데이터가 들어갈 배열을 할당하여 그 주소를 복사한다.
for(int i=0; i<rows; i++)
arr[i] = new int [cols]; // 실제 각 행의 데이터를 저장할 배열
return arr;
}
//int 형 2차원 배열 동적 해제
void delete2(int **arr, int row, int cols=0) // cols는 사용되지 않으므로 default처리
{
if(arr != NULL)
{
for(int i=0; i<rows; i++) delete[] arr[i]
delete[] arr; // 최종적으로 포인터 배열 arr를 해제한다.
}
}