<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Speicherbelegung von Variablen untersuchen]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe folgendes Problem:<br />
Mein Programm hat die Form:</p>
<pre><code class="language-cpp">int main()
{
   int n=10;
   while(n&lt;9000){
   ...
   fkt(n);
   ...
   n=n+100;
   }
}
</code></pre>
<p>wobei beim jeden Durchlauf viel Daten in Speicher belegt werden.<br />
Natürlich möchte ich nach jedem Durchlauf die Speicherbelegung gereinigt haben, weil sie von den nächsten Durchläufen nicht verwendet werden.<br />
ich verwende delete oder clear, um ein paar Vektoren und von new erzeugte Variable zu löschen, aber wenn ich in den Verwendungsverlauf des physikalischen Speichers gucke, steigt die Linie fast monoton, also nicht in Zickzackform wie ich es gerne hätte.<br />
Wie kann ich in MSVS gucken, was alles in Speicher sind?<br />
danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/262568/speicherbelegung-von-variablen-untersuchen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 15:14:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/262568.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 08 Mar 2010 12:52:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicherbelegung von Variablen untersuchen on Mon, 08 Mar 2010 12:52:24 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe folgendes Problem:<br />
Mein Programm hat die Form:</p>
<pre><code class="language-cpp">int main()
{
   int n=10;
   while(n&lt;9000){
   ...
   fkt(n);
   ...
   n=n+100;
   }
}
</code></pre>
<p>wobei beim jeden Durchlauf viel Daten in Speicher belegt werden.<br />
Natürlich möchte ich nach jedem Durchlauf die Speicherbelegung gereinigt haben, weil sie von den nächsten Durchläufen nicht verwendet werden.<br />
ich verwende delete oder clear, um ein paar Vektoren und von new erzeugte Variable zu löschen, aber wenn ich in den Verwendungsverlauf des physikalischen Speichers gucke, steigt die Linie fast monoton, also nicht in Zickzackform wie ich es gerne hätte.<br />
Wie kann ich in MSVS gucken, was alles in Speicher sind?<br />
danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1865864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1865864</guid><dc:creator><![CDATA[x_x]]></dc:creator><pubDate>Mon, 08 Mar 2010 12:52:24 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherbelegung von Variablen untersuchen on Mon, 08 Mar 2010 13:13:23 GMT]]></title><description><![CDATA[<blockquote>
<p>Verwendungsverlauf des physikalischen Speichers</p>
</blockquote>
<p>Diese Zahl hat (fast) überhaupt keinen Zusammenhang mit dem Speicher den dein Programm tatsächlich benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1865874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1865874</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 08 Mar 2010 13:13:23 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherbelegung von Variablen untersuchen on Mon, 08 Mar 2010 14:03:14 GMT]]></title><description><![CDATA[<p>hi,<br />
das z.B.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void main(){
	int n=1;
	while (n&lt;10000){
		double* quad = new double[n*n];

		quad[0]=(double)n*n;
		cout&lt;&lt;quad[0];

		n++;
		delete quad;
	}
system(&quot;pause&quot;);
}
</code></pre>
<p>ist das, was ich wollte, in WindowsTask-Manager sehe ich fast konstanten Verlauf, wenn ich delete quade nicht verwende, ist der Speicher sofort voll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1865909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1865909</guid><dc:creator><![CDATA[x_x]]></dc:creator><pubDate>Mon, 08 Mar 2010 14:03:14 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherbelegung von Variablen untersuchen on Mon, 08 Mar 2010 14:08:57 GMT]]></title><description><![CDATA[<p>C++-Basics:<br />
new -&gt; delete;<br />
new[] -&gt; delete[]<br />
Du machst<br />
new[] -&gt; delete.<br />
Gibst also den Speicher deines Arrays nicht korrekt frei.<br />
Und eigentlich sollte der Speicherverbrauch nicht linear sondern quadratisch steigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1865916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1865916</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Mon, 08 Mar 2010 14:08:57 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherbelegung von Variablen untersuchen on Mon, 08 Mar 2010 14:09:43 GMT]]></title><description><![CDATA[<p>x_x schrieb:</p>
<blockquote>
<p>hi,<br />
das z.B.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void main(){
	int n=1;
	while (n&lt;10000){
		double* quad = new double[n*n];
		
		quad[0]=(double)n*n;
		cout&lt;&lt;quad[0];
		
		n++;
		delete quad;
	}
system(&quot;pause&quot;);
}
</code></pre>
<p>ist das, was ich wollte, in WindowsTask-Manager sehe ich fast konstanten Verlauf, wenn ich delete quade nicht verwende, ist der Speicher sofort voll.</p>
</blockquote>
<p>Du hast da auch ein Speicherloch.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> <strong>Merke:</strong> Wenn du mit <strong>new[]</strong> Speicher allokierst musst du immer mit <strong>delete[]</strong> den Speicher freigeben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
<p>Unter Windows kannst du ja mal mit</p>
<pre><code class="language-cpp">EmptyWorkingSet( GetCurrentProcess() );
</code></pre>
<p>experimentieren.</p>
<p>(Du brauchst dazu &lt;psapi.h&gt; und musst die psapi.lib linken.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1865917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1865917</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Mon, 08 Mar 2010 14:09:43 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherbelegung von Variablen untersuchen on Mon, 08 Mar 2010 14:12:00 GMT]]></title><description><![CDATA[<p>Ohne sleep() in der while() Schleife ist der Speicher sogar instantan voll, da sieht man wahrscheinlich nur einen senkrechte Anstieg.<br />
Wirklich aussagekräftige Ergebnisse erhälst du nur, wenn du einen Profiler benutzt, der deine Anwendung analysiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1865920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1865920</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 08 Mar 2010 14:12:00 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherbelegung von Variablen untersuchen on Mon, 08 Mar 2010 15:40:02 GMT]]></title><description><![CDATA[<p>evilissimo schrieb:</p>
<blockquote>
<p>Du hast da auch ein Speicherloch.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> <strong>Merke:</strong> Wenn du mit <strong>new[]</strong> Speicher allokierst musst du immer mit <strong>delete[]</strong> den Speicher freigeben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
</blockquote>
<p>Unabhängig davon, dass er natürlich einen Fehler macht und delete/delete[] passend verwenden muss: war es nicht so, dass delete auch bei Arrays funktioniert und das einzige Problem bei der Sache ist, dass keine Destruktoren aufgerufen werden, so dass bei PODs keine memleaks entstehen und trotz Programmierfehler alles glatt läuft?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1865976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1865976</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 08 Mar 2010 15:40:02 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherbelegung von Variablen untersuchen on Mon, 08 Mar 2010 16:14:27 GMT]]></title><description><![CDATA[<p>ISO/IEC 14882:2003 schrieb:</p>
<blockquote>
<p>5.3.5 Delete<br />
The delete-expression operator destroys a most derived object (1.8) or array created by a new-expression.</p>
<p>delete-expression:<br />
::opt delete cast-expression<br />
<div class="plugin-markdown"><input type="checkbox" id="checkbox136032" /><label for="checkbox136032">cast-expression</label></div></p>
<p>The first alternative is for non-array objects, and the second is for arrays.</p>
<p>...</p>
<p>In the first alternative (delete object), the value of the operand of delete shall be <strong>a pointer to a non-array object</strong> or <strong>a pointer to a sub-object</strong> (1.8) representing a base class of such an object (clause 10). <strong>If not, the behavior is undefined.</strong></p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1866007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866007</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Mon, 08 Mar 2010 16:14:27 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherbelegung von Variablen untersuchen on Mon, 08 Mar 2010 17:10:37 GMT]]></title><description><![CDATA[<p>_matze schrieb:</p>
<blockquote>
<p>Unabhängig davon, dass er natürlich einen Fehler macht und delete/delete[] passend verwenden muss: war es nicht so, dass delete auch bei Arrays funktioniert und das einzige Problem bei der Sache ist, dass keine Destruktoren aufgerufen werden, so dass bei PODs keine memleaks entstehen und trotz Programmierfehler alles glatt läuft?</p>
</blockquote>
<p>Was du wahrscheinlich meinst, ist <code>operator delete</code> bzw. <code>operator delete[]</code> , also die Funktionen für reine Speicherfreigabe ohne Zerstörung – ähnlich wie <code>free()</code> in C.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1866050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866050</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 08 Mar 2010 17:10:37 GMT</pubDate></item></channel></rss>