다음을 통해 공유


operator new(CRT)

힙에서 메모리 블록을 할당합니다.

void *__cdecl operator new( 
   size_t count 
); 
void *__cdecl operator new( 
   size_t count,  
   void * object 
) throw(); 
void *__cdecl operator new( 
   size_t count,  
   const std::nothrow_t& 
) throw();

매개 변수

  • count
    할당 크기입니다.

  • object
    개체가 생성된 메모리 블록을 가리키는 포인터입니다.

반환 값

새로 할당된 저장소에서 가장 낮은 바이트 주소의 포인터입니다.

설명

이러한 operator new의 형태는 벡터 new 형식(연산자 new[])과는 다른 스칼라 new로 알려져 있습니다.

이 연산자의 첫 번째 형식은 비배치 형식으로 알려져 있습니다. 이 연산자의 두 번째 형식은 배치 형식이라고 하며, 세 번째 형식은 배치 형식이라고 하고, 세 번째 형태는 비투척, 배치 형태입니다.

이 연산자의 첫 번째 형식은 컴파일러에 의해 정의되고 new.h를 프로그램에 포함시킬 필요가 없습니다.

delete 연산자operator new로 할당된 메모리를 해제합니다.

new 연산자가 오류 상황에서 null을 반환하는지 예외를 발생시키는지를 구성할 수 있습니다. 자세한 내용은 새 및 삭제 연산자 를 참조하십시오.

보고 혹은 보고하지 않는 동작의 예외에 대해, CRT operator new는 표준 C++ 라이브러리의 new 연산자처럼 동작합니다.

요구 사항

루틴

필수 헤더

new

<new.h>

호환성에 대한 자세한 내용은 소개 단원의 호환성 부분을 참조하십시오.

라이브러리

모든 버전의 C 런타임 라이브러리입니다.

예제

다음은 스칼라, 비배치 형식의 operator new를 사용하는 방법을 보여줍니다.

// crt_new1.cpp
#include <stdio.h>
int main() {
   int * i = new int(6);
   printf("%d\n", *i);
   delete i;
}

다음은 스칼라, 배치 형식의 operator new를 사용하는 방법을 보여줍니다.

// crt_new2.cpp
#include <stdio.h>
#include <new.h>
int main() {
   int * i = new int(12);
   printf("*i = %d\n", *i);
   // initialize existing memory (i) with, in this case, int(7)
   int * j = new(i) int(7);   // placement new
   printf("*j = %d\n", *j);
   printf("*i = %d\n", *i);
   delete i;   // or, could have deleted j
}

다음은 스칼라, 배치, 비투척 형식의 operator new를 사용하는 방법을 보여줍니다.

// crt_new3.cpp
#include <stdio.h>
#include <new.h>
int main() {
   // allocates memory, initialize (8) and if call fails, new returns null
   int * k = new(std::nothrow) int(8);   // placement new
   printf("%d\n", *k);
   delete k;
}

해당 .NET Framework 항목

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

참고 항목

참조

메모리 할당