✅ C++ new, delete로 동적 배열 만들기
#include <iostream>
#include <memory>
#define DEFAULT_SIZE (5)
int main() {
//int arr[DEFAULT_SIZE];
//위 배열은 프로그램 종료시까지 용량은 5이므로
// 크기를 변경할수 있는 동적 배열을 만들어 보자.
int* buf = new int[DEFAULT_SIZE]; // 5개짜리를 만들고,
// 초기화
//for (int i = 0; i < DEFAULT_SIZE; i++) {
// buf[i] = 0;
//}
memset(buf, 0, sizeof(int)*DEFAULT_SIZE);
// 값 넣기
buf[0] = 11;
buf[4] = 55; // 값을 이리저리 넣고 볶고
// 전체 출력해보기
for (int i = 0; i < DEFAULT_SIZE; i++) {
std::cout << buf[i] << ",";
}
std::cout << std::endl;
delete[] buf;
return 0;
}
✅ C++ 동적 배열 사이즈 변경하기
#include <iostream>
#include <memory>
#define DEFAULT_SIZE (5)
#define INC_SIZE (3)
int main() {
//int arr[DEFAULT_SIZE];
//위 배열은 프로그램 종료시까지 용량은 5이므로
// 크기를 변경할수 있는 동적 배열을 만들어 보자.
int* org_buf = new int[DEFAULT_SIZE]; // 5개짜리를 만들고,
// 초기화
//for (int i = 0; i < DEFAULT_SIZE; i++) {
// buf[i] = 0;
//}
memset(org_buf, 0, sizeof(int)*DEFAULT_SIZE);
// 크기를 키워보자. 어떻게 키울까? // 솔류션은 정해져있다.
// 기존 배열 org_arr 사이즈 5 + 추가분의 메모리 +3 = 총 8사이즈의 메모리 만들기
// 메모리 0으로 초기화
// ext_arr에 org 내용을 복사
// 기존 org_arr 삭제
// ext_memory 사용하기
int* ext_buf = new int[DEFAULT_SIZE+INC_SIZE];
memset(ext_buf, 0, sizeof(int) * (DEFAULT_SIZE + INC_SIZE));
memcpy(ext_buf, org_buf, sizeof(int) * DEFAULT_SIZE);
delete[] org_buf;
ext_buf[0] = 11;
ext_buf[1] = 22;
ext_buf[2] = 33;
ext_buf[3] = 44;
ext_buf[4] = 55;
*(ext_buf +5) = 66;
ext_buf[6] = 77;
ext_buf[7] = 88;
// 전체 출력해보기
for (int i = 0; i < DEFAULT_SIZE + INC_SIZE; i++) {
std::cout << ext_buf[i] << ",";
}
std::cout << std::endl;
delete[] ext_buf;
return 0;
}