2.1.51. --[no_]force_new_nothrow

이 옵션은 C++의 new 식의 동작을 제어합니다.

C++ 표준에서는 throw로 선언된 no throw operator new에서만 실패 시에 NULL을 반환할 수 있습니다. 다른 모든 operator newNULL을 반환할 수 없으며 기본 operator new에서는 실패 시 예외를 throw합니다.

--force_new_nothrow를 사용하는 경우 컴파일러에서는 전역 ::operator new 또는 ::operator new[]를 사용하는 new T(...args...)와 같은 식을 new (std::nothrow) T(...args...)인 것처럼 처리합니다.

--force_new_nothrow도 클래스 관련 operator new 또는 오버로드된 전역 operator new를 no throw로 처리합니다.

Note

--force_new_nothrow 옵션은 C++ 표준을 준수하지 않는 레거시 소스 코드에 대한 마이그레이션 지원용으로만 제공됩니다. 이 옵션은 사용하지 않는 것이 좋습니다.

모드

이 옵션은 소스 언어가 C++인 경우에만 적용됩니다.

기본값

기본값은 --no_force_new_nothrow입니다.

예제

struct S
{
    void* operator new(std::size_t);
    void* operator new[](std::size_t);
};
void *operator new(std::size_t, int);

--force_new_nothrow 옵션을 사용하면 이 예제가 다음과 같이 처리됩니다.

struct S
{
    void* operator new(std::size_t) throw();
    void* operator new[](std::size_t) throw();
};
void *operator new(std::size_t, int) throw();

추가 참고

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0348AK
Non-Confidential