2012-07-05 2 views
0

전역 새 연산자 및 삭제 연산자에 대한 정의가있는 라이브러리는 무엇입니까? 라이브러리의 어떤 파일에 이러한 연산자에 대한 정의가 포함되어 있습니까?전역 새 연산자 및 삭제 연산자

+0

이것은 구현에 따라 다릅니다. –

+0

작성 방법을 살펴 보려면 malloc() 및 free()를 사용하십시오. – SingerOfTheFall

+0

@SingerOfTheFall : 반드시 그런 것은 아닙니다. –

답변

3

operator newoperator delete의 비 배치 형태 (및 배열 형식)은 모든 번역 단위에서 전역 적 범위에서 암시 적으로 선언됩니다.

표준 배치 양식은 <new>에 있습니다.

라이브러리 함수의 정의는 일반적으로 사용할 수 없습니다. 공급 업체가 소스를 제공 할 수 있으며,이 경우 소스가 어딘가에 있습니다. 귀하의 의견에서

있지만은, 당신은 오히려 메모리를 할당 operator new 기능보다는 새로운 표현new의 사용에 대해 이야기 할 수있다. 새 표현식은 컴파일러에서 처리하여 operator new 및 개체 생성자에 대한 필요한 호출을 생성합니다. 아마도 여기에는 특정 구현이 없을 것입니다. 컴파일러의 코드 생성기의 관련 부분을 살펴볼 필요가 있습니다.

+0

@ Mike : 'malloc', 'printf'등의 코드를 보는 것과 같은 코드를 볼 수 있을까요? –

+0

@LinuxPenseur : 선언문은 암시 적이므로 볼 수 없습니다. 정의는 소스 또는 라이브러리 또는 컴파일러에서 작성된 어딘가에 있습니다. 사용 가능한지 여부는 공급 업체에 달려 있습니다. –

3

정의 된 위치는 지정되지 않았지만 헤더에 선언 된 것으로 지정되어 있습니다. <new>. (당신은 단지 비 배치 new 표현에서 사용되는 표준 버전을 사용하는 경우 <new>을 포함,이 모든 번역 단위로 자동으로 사용할 수있는 필요가 없습니다.)