<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://twiki.yo-net.jp/index.php?action=history&amp;feed=atom&amp;title=Cpp_Delete%E6%BC%94%E7%AE%97%E5%AD%90</id>
	<title>Cpp Delete演算子 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://twiki.yo-net.jp/index.php?action=history&amp;feed=atom&amp;title=Cpp_Delete%E6%BC%94%E7%AE%97%E5%AD%90"/>
	<link rel="alternate" type="text/html" href="https://twiki.yo-net.jp/index.php?title=Cpp_Delete%E6%BC%94%E7%AE%97%E5%AD%90&amp;action=history"/>
	<updated>2026-04-05T19:31:25Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>https://twiki.yo-net.jp/index.php?title=Cpp_Delete%E6%BC%94%E7%AE%97%E5%AD%90&amp;diff=91&amp;oldid=prev</id>
		<title>Yo-net: ページの作成:「C++に戻る   &lt;table class=&quot;mbox-small&quot; style=&quot;border:1px solid #aaa; background-color:#f9f9f9; width:22em;&quot; id=&quot;RealTitleBanner&quot;&gt; &lt;tr&gt; &lt;td style=&quot;width:1px;&quot;&gt;&lt;/td&gt; &lt;td class=&quot;mbox-text plainlist&quot; style=&quot;&quot;&gt;本来の表記は「&lt;b&gt;&lt;span id=&quot;RealTitle&quot; style=&quot;font-size:large;&quot;&gt;C++(Cpp) delete演算子&lt;/span&gt;&lt;/b&gt;」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。&lt;/t…」</title>
		<link rel="alternate" type="text/html" href="https://twiki.yo-net.jp/index.php?title=Cpp_Delete%E6%BC%94%E7%AE%97%E5%AD%90&amp;diff=91&amp;oldid=prev"/>
		<updated>2022-09-26T02:02:05Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「&lt;a href=&quot;/C_PlusPlus#C++からの技術&quot; title=&quot;C PlusPlus&quot;&gt;C++&lt;/a&gt;に戻る   &amp;lt;table class=&amp;quot;mbox-small&amp;quot; style=&amp;quot;border:1px solid #aaa; background-color:#f9f9f9; width:22em;&amp;quot; id=&amp;quot;RealTitleBanner&amp;quot;&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td style=&amp;quot;width:1px;&amp;quot;&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;td class=&amp;quot;mbox-text plainlist&amp;quot; style=&amp;quot;&amp;quot;&amp;gt;本来の表記は「&amp;lt;b&amp;gt;&amp;lt;span id=&amp;quot;RealTitle&amp;quot; style=&amp;quot;font-size:large;&amp;quot;&amp;gt;C++(Cpp) delete演算子&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。&amp;lt;/t…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[C PlusPlus#C++からの技術|C++]]に戻る&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;mbox-small&amp;quot; style=&amp;quot;border:1px solid #aaa; background-color:#f9f9f9; width:22em;&amp;quot; id=&amp;quot;RealTitleBanner&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width:1px;&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;mbox-text plainlist&amp;quot; style=&amp;quot;&amp;quot;&amp;gt;本来の表記は「&amp;lt;b&amp;gt;&amp;lt;span id=&amp;quot;RealTitle&amp;quot; style=&amp;quot;font-size:large;&amp;quot;&amp;gt;C++(Cpp) delete演算子&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
※このページでは[[C PlusPlus|C++]]にのみ存在する機能として、記事タイトルが&amp;lt;nowiki&amp;gt;C++ delete演算子&amp;lt;/nowiki&amp;gt;になっています。&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== '''delete演算子''' ==&lt;br /&gt;
&lt;br /&gt;
delete演算子は[[Cpp New演算子|new演算子]]によって確保されたメモリを解放するための命令になります。deleteの後ろにメモリを開放したいnew演算子によってメモリを確保しているポインタ変数を指定します。配列のメモリ解放時はdelete[]のように記述して、後ろに動的配列ポインタ変数を記述します。&lt;br /&gt;
&lt;br /&gt;
例1&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
  int *pnReturnValue;&lt;br /&gt;
  pnReturnValue = new int;&lt;br /&gt;
  …&lt;br /&gt;
  delete pnReturnValue;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
例2&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
  int nLength = strlen(pcStrOrigin)&lt;br /&gt;
  char *pcMessage;&lt;br /&gt;
  pcMessage = new char[nLength];&lt;br /&gt;
  …&lt;br /&gt;
  delete[] pcMessage;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記のように配列を解放するときは[]が必要です。&lt;br /&gt;
&lt;br /&gt;
多次元配列を解放する場合は動的に生成したすべての要素を順序立てて解放する必要があります。&lt;br /&gt;
&lt;br /&gt;
例3&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
  char ***pppcStrChart = new char**[10];&lt;br /&gt;
  for(int i = 0;i &amp;lt; 10;i++){&lt;br /&gt;
    pppcStrChart[i] = new char*[2];&lt;br /&gt;
    for(int j = 0;j &amp;lt; 2;j++){&lt;br /&gt;
      pppcStrChart[i][j] = new char[256];      &lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  …&lt;br /&gt;
  for(int i = 0;i &amp;lt; 10;i++){&lt;br /&gt;
    for(int j = 0;j &amp;lt; 2;j++){&lt;br /&gt;
      delete[] pppcStrChart[i][j];      &lt;br /&gt;
    }&lt;br /&gt;
    delete[] pppcStrChart[i];      &lt;br /&gt;
  }&lt;br /&gt;
  delete[] pppcStrChart;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
delete演算子は、演算子ですから、演算子のオーバロードをすることができます。以下のような関数に独自の機能を追加していけばよいです。&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void* operator new(size_t sizeNew) {&lt;br /&gt;
  return malloc(sizeNew);&lt;br /&gt;
}&lt;br /&gt;
void operator delete(void* pDelete) {&lt;br /&gt;
    free(pDelete);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[C PlusPlus#C++からの技術|C++]]に戻る&lt;/div&gt;</summary>
		<author><name>Yo-net</name></author>
	</entry>
</feed>