カテゴリ: C++ 更新日: 2026/02/25

C++のnew/delete演算子を完全解説!初心者でもわかるメモリ管理の仕組み

new/delete演算子の仕組み
new/delete演算子の仕組み

先生と生徒の会話形式で理解しよう

生徒

「C++でnewとかdeleteって出てきたんですが、正直なにをしているのか分かりません…」

先生

「C++では、プログラムが使う場所を自分で確保したり、片付けたりできます。そのときに使うのがnew演算子とdelete演算子です。」

生徒

「場所って、パソコンの中のどこかですか?」

先生

「そうですね。では、パソコンを触ったことがない人でも分かるように、たとえ話から説明していきましょう。」

1. C++のnew/delete演算子を理解する前に知っておきたいこと

1. C++のnew/delete演算子を理解する前に知っておきたいこと
1. C++のnew/delete演算子を理解する前に知っておきたいこと

C++のnew演算子delete演算子を理解するには、まずメモリという考え方を知る必要があります。メモリとは、パソコンの中にある作業用の机のようなものです。プログラムは、この机の上に数字や文字を書きながら動いています。

変数を作るというのは、「机の上に紙を一枚置いて、そこに名前を付ける」イメージです。C++では、普通に変数を書くと、自動的に机の一部が使われます。しかし、必要な大きさや使うタイミングを自分で決めたい場合があります。そのときに登場するのがnewとdeleteです。

2. new演算子とは?場所を借りるための命令

2. new演算子とは?場所を借りるための命令
2. new演算子とは?場所を借りるための命令

new演算子は、「パソコンのメモリに新しい場所を用意してください」とお願いする命令です。現実世界でたとえるなら、倉庫に電話をして「段ボール箱を一つ貸してください」と頼むようなものです。

このときC++は、必要な大きさの場所を探し、その場所の住所を教えてくれます。この住所のことをポインタと呼びます。ポインタとは、「場所を示すための番号」だと考えてください。


#include <iostream>

int main() {
    int* p = new int;
    *p = 10;
    std::cout << *p << std::endl;
    return 0;
}

10

この例では、new演算子で整数を置く場所を借りています。pには場所の住所が入り、*pを使ってその場所の中身にアクセスしています。

3. delete演算子とは?借りた場所を返す命令

3. delete演算子とは?借りた場所を返す命令
3. delete演算子とは?借りた場所を返す命令

delete演算子は、newで借りたメモリを返すための命令です。倉庫から借りた段ボール箱は、使い終わったら返しますよね。それと同じで、使い終わったメモリはdeleteで解放します。

もし返さずに放置すると、机の上がどんどん散らかっていきます。これをメモリリークと呼びます。初心者のうちはピンと来なくても、「片付けを忘れると困る」という感覚で覚えておくと十分です。


#include <iostream>

int main() {
    int* p = new int;
    *p = 20;
    std::cout << *p << std::endl;
    delete p;
    return 0;
}

20

このように、newとdeleteは必ずセットで使うのが基本です。

4. 配列を扱うnew[]とdelete[]の仕組み

4. 配列を扱うnew[]とdelete[]の仕組み
4. 配列を扱うnew[]とdelete[]の仕組み

C++では、数字を一つだけでなく、たくさんまとめて使いたいこともあります。その場合は、配列用のnew演算子を使います。これは「ロッカーをまとめて借りる」イメージです。


#include <iostream>

int main() {
    int* numbers = new int[3];
    numbers[0] = 1;
    numbers[1] = 2;
    numbers[2] = 3;

    for (int i = 0; i < 3; i++) {
        std::cout << numbers[i] << std::endl;
    }

    delete[] numbers;
    return 0;
}

1
2
3

配列の場合は、必ずdelete[]を使います。これを間違えると、正しく片付けができません。

5. new/delete演算子と自動変数の違い

5. new/delete演算子と自動変数の違い
5. new/delete演算子と自動変数の違い

普段よく使う変数は、プログラムの中で自動的に作られ、自動的に消えます。これを自動変数と呼びます。一方、newで作ったメモリは、deleteを書くまで残り続けます。

これは「授業が終わると片付く机」と「自分で借りた倉庫」の違いのようなものです。new/delete演算子を使うと、自由度は上がりますが、その分、管理する責任も増えます。

6. new/delete演算子を使う場面と注意点

6. new/delete演算子を使う場面と注意点
6. new/delete演算子を使う場面と注意点

C++のnew/delete演算子は、大きなデータを扱うときや、使うタイミングが決まっていないデータを扱うときに使われます。ただし、初心者のうちは「メモリを借りたら必ず返す」というルールを守ることが何より重要です。

また、deleteした後のポインタを使うと、予期しない動作が起きます。使い終わった箱をもう一度使おうとするようなものなので、とても危険です。

7. C++演算子まとめとしてのnew/deleteの位置づけ

7. C++演算子まとめとしてのnew/deleteの位置づけ
7. C++演算子まとめとしてのnew/deleteの位置づけ

new演算子とdelete演算子は、C++の中でも特に重要な演算子です。計算をするためではなく、メモリ管理という役割を持っています。

プログラミング未経験者にとっては難しく感じやすい部分ですが、「場所を借りる」「使い終わったら返す」という流れをイメージできれば、new/delete演算子の仕組みはしっかり理解できます。C++の演算子まとめの中でも、基礎として押さえておきたいポイントです。

カテゴリの一覧へ
新着記事
New1
C++
C++のメンバアクセス演算子を完全解説!初心者でもわかる . → :: の使い方まとめ
New2
Rust
Rustの文字列を極める!&str(文字列スライス)の基本概念とString型との違い
New3
C++
C++のキャスト演算子を完全解説!dynamic_cast・static_cast・const_cast・reinterpret_castを初心者向けに説明
New4
C++
C++開発のIDE選びを完全ガイド!初心者でもわかるCLion・Eclipse CDT・Qt Creator比較
人気記事
No.1
Java&Spring記事人気No1
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.2
Java&Spring記事人気No2
C言語
C言語を学ぶ初心者におすすめの環境構築手順【2025年版】
No.3
Java&Spring記事人気No3
C言語
C言語のソースコードとヘッダファイルの役割とは?初心者向けにわかりやすく解説!
No.4
Java&Spring記事人気No4
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.5
Java&Spring記事人気No5
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.6
Java&Spring記事人気No6
C言語
C言語開発でよく使われるエディタとIDEランキング【初心者向け完全ガイド】
No.7
Java&Spring記事人気No7
C++
C++リンカとコンパイラのオプション設定を完全ガイド!初心者にもわかる開発環境の基礎
No.8
Java&Spring記事人気No8
C言語
C言語の列挙型(enum)の使い方を完全ガイド!初心者でもわかる基本操作