2013/11/21

new演算子とdelet演算子 メモリの動的操作

C言語で動的なメモリの確保・解放は、malloc関数とfree関数で行いますが、C++ではnew演算子とdelete演算子を使います。
 
 new演算子:メモリの動的確保
 delete演算子:メモリの解放

【sample code】
---------------------------------------------------------------------------------------
#include <iostream>

using namespace std;

int main (void)
{
    int *pArray;
    pArray = new int[10]; // int型の領域を動的確保
    //アドレスを表示 → printf-1
    printf(" pArray       = %p\n", pArray);
    printf(" pArray + 1 = %p\n", pArray + 1);
    printf(" pArray + 2 = %p\n", pArray + 2);

    for (int i=0; i < 10; i++)
    {
        pArray[i] = i * 100;        // 値を表示 → printf-2
        printf(" pArray[%d] = %d\n", i, pArray[i]);
    };
       
    delete[] pArray; // 動的に確保した領域の解放
}
---------------------------------------------------------------------------------------

【printf】
・ printf-1
       pArray       = 0x7fe011c039f0
       pArray + 1 = 0x7fe011c039f4
       pArray + 1 = 0x7fe011c039f8
・ printf-2
       pArray[0] = 0
       pArray[1] = 100
             :
       pArray[9] = 900

【point】
・new演算子は、その直後に書いた型の領域を確保
  →上のコードではint型の領域を確保
・”動的とは”


【reference】

0 件のコメント: