Cpp New演算子のソースを表示
新しいページはコチラ
移動:
案内
,
検索
<table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner"> <tr> <td style="width:1px;"></td> <td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++ New演算子</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td> </tr> </table> ※このページでは[[C PlusPlus|C++]]にのみ存在する機能として、記事タイトルが<nowiki>C++ New演算子</nowiki>になっています。<br /> <br /> == '''new演算子''' == new演算子は、ポインタ変数に対して、new演算子の後ろに設定する型でメモリを確保する命令です。配列のメモリ確保も出来ます。このようなメモリの確保は動的なメモリ確保と呼ばれます。int n;のように定義された通常の変数はプログラム中で変数宣言されたところから、名前空間が終了するまでメモリ確保がされます。静的なメモリ確保と呼びます。常に一定の大きさのメモリを消費します。対して、動的なメモリ確保では、プログラム中で任意の区間で繰り返しメモリの確保と解放を繰り返すことができ、メモリ確保のタイミングをプログラム側で制御することが出来ます。配列の大きさもプログラム動作時に任意の大きさで確保できるため、必要最小限のメモリ確保を行うように制御することも可能です。静的なメモリ確保では配列の大きさは予め決められた一定の大きさでしか設定できないため、不必要にメモリを大きく確保することが多くなります。new演算子によって確保されたメモリは[[Cpp Delete演算子|delete演算子]]によって解放処理を記述します。new演算子で確保したメモリがあってもdelete演算子によって解放をしない場合は名前空間の終了時に解放されます。 例1 <syntaxhighlight lang="cpp"> int *pnReturnValue = new int; </syntaxhighlight> ポインタ変数は宣言された時点では、int型の変数のアドレスを保持する変数が確保されただけで、宣言された時点では具体的なアドレスも保持していないため、値を代入することはできません。new演算子によってint型の変数が生成され、具体的なアドレスを保持し、型の大きさだけメモリを確保されます。 例2 <syntaxhighlight lang="cpp"> int *pnReturnValue; pnReturnValue = new int; </syntaxhighlight> 例1のパターンを2ステップに分けて記述する場合は上記のような形式になります。1行目でポインタ変数を宣言して、2行目のようにポインタ変数に対してnew演算子を利用してメモリを確保します。 例3 <syntaxhighlight lang="cpp"> int nLength =strlen(pcStrOrigin) char *pcMessage; pcMessage = new char[nLength]; </syntaxhighlight> 配列の確保は上記のように行います。動的なメモリ確保では、配列の大きさに変数を設定することができます。静的なメモリ確保を行う配列では、コンパイルエラーとなるような指定が可能です。
テンプレート:記事名の制約
(
ソースを閲覧
)
Cpp New演算子
に戻る。
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ