--force_new_nothrow--no_force_new_nothrow

このオプションを使用すると、new 式の動作を C++ で制御できます。

C++ 標準では、operator new が失敗したときに NULL を返すことができるのは、throw() 付きで宣言された nothrow 形式の operator new のみと規定されています。それ以外の operator new は決して NULL を返すことはできません。デフォルトの operator new でも、失敗すると例外がスローされます。

--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++ 標準に準拠していない従来のソースコードを移行する目的でのみ提供されています。他の目的でこのオプションを使用することはお勧めしません。

Show/hideモード

このオプションは、ソース言語が C++ の場合にのみ有効です。

Show/hideデフォルト

デフォルトは --no_force_new_nothrow です。

Show/hide

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();

Show/hide関連項目

Copyright © 2010 ARM. All rights reserved.ARM DUI 0491BJ
Non-ConfidentialID011811