new でメモリ領域の割り当て

new を使えば、簡単にメモリ領域を割り当てることができます。
Malloc を使う方法は Malloc で領域を確保 を参照して下さい。
構造体の領域を確保する場合は new で構造体を割り当てる を参照して下さい。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. C++ では、new および delete 演算子を使って、メモリ領域の動的な確保と開放を行います。
    メインプログラムのソースコードです。
    /*★ New でメモリ領域を割り当てる    前田 稔 ★*/
    #include <stdio.h>
    #include <string.h>
    
    int     *p_int= NULL;
    char    *p_char= NULL;
    
    //★ Windows Main 関数
    int  main()
    {
        p_int=  new int;
        p_char= new char[32];
        *p_int= 123;
        strcpy(p_char,"char[32] を確保");
        printf("New でメモリを割り当てる  %d  %s\n",*p_int,p_char);
        if (p_int)  delete p_int;
        if (p_char) delete [] p_char;
        return 0;
    }
        
  2. new は Object Class を生成するときに良く使われますが、本来はメモリ領域を割り当てる命令です。
    次のコードでは、割り当てた int 型のメモリ領域のポインタが p_int に格納されます。
    p_int= new int;
    割り当てた領域に初期値を設定するときは次のように書きます。
    p_int= new int(123);
  3. new で割り当てた領域はヒープ領域に確保されます。
    この領域はプログラマが delete で開放しない限りプログラムが終了しても開放されません。
    つまり開放しないとメモリリークが発生することになります。
    new で割り当てた領域は Object Class と同じように delete で開放して下さい。
    if (p_int) delete p_int;
    NULL が格納されているポインタを delete 演算子に指定すると、何も起こらないことが保証されているようなので、if は不用かも知れません。
    delete p_int;

超初心者のプログラム入門(C/C++)