Namespaces
Variants

Standard library header <new>

From cppreference.net
Standard library headers

このヘッダは 動的メモリ管理 ライブラリの一部であり、特に 低レベルメモリ管理 機能を提供します。

目次

クラス

メモリ確保が失敗したときにスローされる例外
(クラス)
無効な長さの配列の確保時にスローされる例外
(クラス)
アライメント対応の確保・解放関数にアライメントを渡すために使用される型
(列挙型)

新しいハンドラの関数ポインタ型
(typedef)

タグ

例外を投げない 確保関数 を選択するために使用されるタグ
(タグ)
operator delete の破壊的削除オーバーロードを選択するために使用されるタグ
(タグ)

定数

偽共有を避けるための最小オフセット
真の共有を促進するための最大オフセット
(定数)

関数

確保関数
(関数)
解放関数
(関数)
現在のnewハンドラを取得する
(関数)
新しいハンドラを登録する
(関数)
(C++17)
ポインタ最適化バリア
(関数テンプレート)

概要

// すべてフリースタンディング
namespace std {
  // ストレージ割り当てエラー
  class bad_alloc;
  class bad_array_new_length;
  struct destroying_delete_t
  {
    explicit destroying_delete_t() = default;
  };
  inline constexpr destroying_delete_t destroying_delete{};
  // グローバル operator new 制御
  enum class align_val_t : size_t
  {
  };
  struct nothrow_t
  {
    explicit nothrow_t() = default;
  };
  extern const nothrow_t nothrow;
  using new_handler = void (*)();
  new_handler get_new_handler() noexcept;
  new_handler set_new_handler(new_handler new_p) noexcept;
  // ポインター最適化バリア
  template<class T> constexpr T* launder(T* p) noexcept;
  // ハードウェアインターフェアランスサイズ
  inline constexpr size_t hardware_destructive_interference_size =
    /* 実装定義 */;
  inline constexpr size_t hardware_constructive_interference_size =
    /* 実装定義 */;
}
// ストレージの割り当てと解放
void*
operator new(std::size_t size);
void*
operator new(std::size_t size, std::align_val_t alignment);
void*
operator new(std::size_t size, const std::nothrow_t&) noexcept;
void*
operator new(std::size_t size,
             std::align_val_t alignment,
             const std::nothrow_t&) noexcept;
void
operator delete(void* ptr) noexcept;
void
operator delete(void* ptr, std::size_t size) noexcept;
void
operator delete(void* ptr, std::align_val_t alignment) noexcept;
void
operator delete(void* ptr, std::size_t size, std::align_val_t alignment) noexcept;
void
operator delete(void* ptr, const std::nothrow_t
(注:指定された条件により、HTMLタグ・属性は保持され、タグ内のテキスト(本例では該当せず)は翻訳対象外、C++固有用語は翻訳せず、元のフォーマットを維持しています)&) noexcept;
void
operator delete(void* ptr, std::align_val_t alignment, const std::nothrow_t
(注:指定された条件により、HTMLタグ・属性は保持され、C++固有用語は翻訳対象外のため、元のテキストをそのまま保持しています)&) noexcept;
void*
operator new[](std::size_t size);
void*
operator new[]
(注:元のテキストは閉じ括弧のみのため、日本語でも同じ記号を保持します)(std::size_t size, std::align_val_t alignment);
void*
operator new[](std::size_t size, const std::nothrow_t
(注:指定された条件により、HTMLタグ・属性は保持され、タグ内のテキスト(本例では該当なし)は翻訳対象外、C++固有用語(std::nothrow_t)は非翻訳のため、出力は原文と同一となります)&) noexcept;
void*
operator new[](std::size_t size,
               std::align_val_t alignment,
               const std::nothrow_t
(注:指定された条件により、HTMLタグ・属性は保持され、C++固有用語は翻訳対象外のため、元のテキストをそのまま保持しています)&) noexcept;
void
operator delete[](void* ptr) noexcept;
void
operator delete[](void* ptr, std::size_t size) noexcept;
void
operator delete[](void* ptr, std::align_val_t alignment) noexcept;
void
operator delete[]
(注:元のテキストは閉じ括弧のみのため、日本語でも同じ記号を保持します)(void* ptr, std::size_t size, std::align_val_t alignment) noexcept;
void
operator delete[]
(注:元のテキストは閉じ括弧のみのため、日本語でも同じ記号を保持します)(void* ptr, const std::nothrow_t&) noexcept;
void
operator delete[](void* ptr, std::align_val_t alignment, const std::nothrow_t
(注:指定された条件により、HTMLタグ・属性は保持され、C++固有用語は翻訳対象外のため、元のテキストをそのまま保持しています)&) noexcept;
constexpr void*
operator new(std::size_t size, void* ptr) noexcept;
constexpr void*
operator new[](std::size_t size, void* ptr) noexcept;
void
operator delete(void* ptr, void*) noexcept;
void
operator delete[]
(注:元のテキストは閉じ括弧のみのため、日本語でも同じ記号を保持します)(void* ptr, void*) noexcept;

クラス std::bad_alloc

namespace std {
  class bad_alloc : public exception
  {
  public:
    // 特殊メンバ関数の仕様については説明を参照
    constexpr const char* what() const noexcept override;
  };
}

クラス std::bad_array_new_length

namespace std {
  class bad_array_new_length : public bad_alloc
  {
  public:
    // 特殊メンバ関数の仕様については説明を参照
    constexpr const char* what() const noexcept override;
  };
}