참고 :new 및 delete 연산자 | Microsoft Learn)
new 연산자
- 할당 요청에 대한 메모리가 불충분한 경우,
std::bad_alloc
예외를 throw ||new(std::nothrow)
사용 - throw되지 않는
operator new
연결의 경우,nullptr
반환 - 반환 값은
void*
- 2 가지 범위
::operator new
: 전역class-name::operator new
: 클래스
- **기본 제공 형식 개체, 사용자 정의된
operater new
함수를 포함하지 않느 클래스 형식 개체 및 모든 형식 "배열" 할당하는 데new
연산자 사용하면, 전역new
함수 호출 - 클래스 범위의
new
함수는 전역new
함수를 숨기는 정적 멤버 함수.- 클래스
new
에서size_t
파라미터를 요구해도,Blanks *SomeBlanks = new Blanks;
같은 방식의 오류 생성 코드가 발생 가능
- 클래스
nothrow를 이용한 검사
- nullptr을 반환하게 할 수 있어 검사 용이
#include <iostream> #include <new> using namespace std; #define BIG_NUMBER 10000000000LL int main() { int *pI = new(nothrow) int[BIG_NUMBER]; if ( pI == nullptr ) { cout << "Insufficient memory" << endl; return -1; } }
delete 연산자
- 2가지 양식
size_t
양식은 크기 범주를 빠르게 검색, 파생 클래스 제거에 용이void operator delete( void * ); void operator delete( void *, size_t );
- 반환 값은
void
'공부 > C++' 카테고리의 다른 글
C++ 저장&링킹 (1) | 2025.03.01 |
---|---|
C++ 컨테이너 클래스 (0) | 2025.03.01 |
포인터 (0) | 2025.02.22 |
Operator 기본 연산자 (0) | 2025.02.21 |
C++ main()에 대해 (0) | 2025.02.19 |