11.5 ARM C++ での ::operator new 関数の使用

ISO C++ 標準に従い、::operator new(std::size_t) では、メモリ割り当てに失敗したときに、シグナルを発生させるのではなく、例外をスローします。例外がキャッチされなかった場合は、std::terminate() が呼び出されます。

コンパイラオプション --force_new_nothrow を指定すると、コンパイル時にすべての new 呼び出しが ::operator new(std::size_t, std::nothrow_t&) または ::operator new[](std::size_t, std::nothrow_t&) への呼び出しに変換されます。ただし、ライブラリ内の operator new 呼び出しおよびクラス固有の operator new 呼び出しは変換されません。

従来のサポート

RVCT v2.0 では、::operator new 関数でメモリ不足が発生すると、C++ 例外をスローするのではなく、シグナル SIGOUTOFHEAP が発生しました。
最新リリースでは、new_handler をインストールしてシグナルを発生させ、RVCT v2.0 と同じ動作にすることができます。

この動作の実装方法は今後のリリースで変更される可能性があるため、このような動作に依存しないようにして下さい。
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.