Cpp Delete演算子のソースを表示
新しいページはコチラ
移動:
案内
,
検索
[[C PlusPlus#C++からの技術|C++]]に戻る <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++ delete演算子</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td> </tr> </table> ※このページでは[[C PlusPlus|C++]]にのみ存在する機能として、記事タイトルが<nowiki>C++ delete演算子</nowiki>になっています。<br /> <br /> == '''delete演算子''' == delete演算子は[[Cpp New演算子|new演算子]]によって確保されたメモリを解放するための命令になります。deleteの後ろにメモリを開放したいnew演算子によってメモリを確保しているポインタ変数を指定します。配列のメモリ解放時はdelete[]のように記述して、後ろに動的配列ポインタ変数を記述します。 例1 <syntaxhighlight lang="cpp"> int *pnReturnValue; pnReturnValue = new int; … delete pnReturnValue; </syntaxhighlight> 例2 <syntaxhighlight lang="cpp"> int nLength = strlen(pcStrOrigin) char *pcMessage; pcMessage = new char[nLength]; … delete[] pcMessage; </syntaxhighlight> 上記のように配列を解放するときは[]が必要です。 多次元配列を解放する場合は動的に生成したすべての要素を順序立てて解放する必要があります。 例3 <syntaxhighlight lang="cpp"> char ***pppcStrChart = new char**[10]; for(int i = 0;i < 10;i++){ pppcStrChart[i] = new char*[2]; for(int j = 0;j < 2;j++){ pppcStrChart[i][j] = new char[256]; } } … for(int i = 0;i < 10;i++){ for(int j = 0;j < 2;j++){ delete[] pppcStrChart[i][j]; } delete[] pppcStrChart[i]; } delete[] pppcStrChart; </syntaxhighlight> delete演算子は、演算子ですから、演算子のオーバロードをすることができます。以下のような関数に独自の機能を追加していけばよいです。<syntaxhighlight lang="cpp"> void* operator new(size_t sizeNew) { return malloc(sizeNew); } void operator delete(void* pDelete) { free(pDelete); } </syntaxhighlight> [[C PlusPlus#C++からの技術|C++]]に戻る
テンプレート:記事名の制約
(
ソースを閲覧
)
Cpp Delete演算子
に戻る。
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ