728x90
반응형
new와 delete는 C++에서 새롭게 등장하는 키워드다. C언어에서 malloc과 free와 대응되는 키워드다. 아래 코드를 보자.
int main(void)
{
int* ptr = new int;
*ptr = 10;
std::cout << *ptr << std::endl;
delete ptr;
return 0;
}
3번째 줄에서 int형 포인터 변수 ptr에 int형만큼의 메모리를 할당하고 4번째 줄에서 ptr이 가리키는 메모리 영역에 10을 저장한다. 그리고 8번째 줄에서 ptr의 메모리를 해지하는 코드다. 아래 코드는 위 코드의 C언어 버전이다.
int main(void)
{
int* ptr = (int*)malloc(sizeof(int));
*ptr = 10;
printf("%d\n", *ptr);
free(ptr);
return 0;
}
반응형
new, delete 키워드를 사용해 배열을 할당 할수 있다. 아래 코드를 보자.
#include <iostream>
int main(void)
{
int size;
std::cout << "배열의 사이즈를 입력하세요 : ";
std::cin >> size;
int* list = new int[size];
for(int i = 0; i < size; i++) {
list[i] = i+1;
std::cout << list[i] << std::endl;
}
delete[] list;
}
9번째줄에서 size 변수를 통해 입력받은 값 만큼 메모리를 할당하고있다. 배열을 생성할때는 9번째줄과 같이 new 키워드를 사용해 만들고자하는 배열의 자료형을 배열과 같이 써준다. 동적으로 할당한 메모리는 사용후 반드시 15째 줄과 같이 delete로 해지해 줘야한다. 아래 코드는 위 코드의 C언어 버전이다.
int main(void)
{
int size;
int* list;
int i;
printf("배열의 사이즈를 입력하세요 : ");
scanf("%d", &size);
list = (int*)malloc(sizeof(int) * size);
for(i = 0; i < size; i++) {
list[i] = i + 1;
printf("%d\n", list[i]);
}
free(list);
return 0;
}
- 끝 -
728x90
반응형
'Programming language > C++' 카테고리의 다른 글
[C++] 디폴트 복사 생성자(Default copy constructor) (0) | 2024.05.31 |
---|---|
[C++] 소멸자(Destructor), 디폴트 소멸자(Default destructor) (0) | 2024.05.03 |
[C++] 생성자(constructor), 디폴트 생성자(default constructor), 생성자? 생성자 란? 생성자 오버로딩 (0) | 2024.05.01 |
[C++] bool(boolean), C++에서 등장하는 새로운 자료형 (0) | 2024.01.17 |
[C++] namespace, 이름 공간, 네임스페이스 란? 범위지정 연산자 ::, using 키워드, 네임스페이스의 별칭 (2) | 2024.01.11 |