<?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[Speicherverwaltung selbstgeschriebener Deque]]></title><description><![CDATA[<p>Hi,<br />
ich möchte eine Deque selbst schreiben und es hängt bereits am Ctor.</p>
<pre><code class="language-cpp">template &lt; typename T&gt;
CdequeElem&lt;T&gt;::CdequeElem() : prev_(0), next_(0)
{
	T *p(0);
	// Versuch Speicher zu allokieren
	try {	
		p = new T[min_alloc_];
		if(!p) throw bad_alloc();
	} catch(...) { delete p; throw; } 

	// Member setzten
	beg_ = p;
	end_ = (p + min_alloc_);
	first_ = last_ = (p + min_alloc_ / 2);
}
</code></pre>
<p>Folgendes Asserts in der main schlagen alle fehl. Auch die Ausgabe der Speicheradresse zeigt beim Vergleich völlig unterschiedliche Werte.<br />
Was läuft schief?</p>
<pre><code class="language-cpp">int main()
{	
	// Tests auf CdequeElem
	swe3::CdequeElem&lt;int&gt; *pt;
	assert(pt-&gt;prev_ == 0 &amp;&amp; pt-&gt;next_ == 0);
	assert(pt-&gt;beg_ &lt; pt-&gt;end_);

        cout &lt;&lt; &quot;last:&quot; &lt;&lt; pt-&gt;last_ &lt;&lt; &quot;  first:&quot; &lt;&lt; pt-&gt;first_ &lt;&lt; endl;
	assert(pt-&gt;last_ == pt-&gt;first_);

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/208550/speicherverwaltung-selbstgeschriebener-deque</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 23:13:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208550.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 19 Mar 2008 15:01:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicherverwaltung selbstgeschriebener Deque on Wed, 19 Mar 2008 15:01:44 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich möchte eine Deque selbst schreiben und es hängt bereits am Ctor.</p>
<pre><code class="language-cpp">template &lt; typename T&gt;
CdequeElem&lt;T&gt;::CdequeElem() : prev_(0), next_(0)
{
	T *p(0);
	// Versuch Speicher zu allokieren
	try {	
		p = new T[min_alloc_];
		if(!p) throw bad_alloc();
	} catch(...) { delete p; throw; } 

	// Member setzten
	beg_ = p;
	end_ = (p + min_alloc_);
	first_ = last_ = (p + min_alloc_ / 2);
}
</code></pre>
<p>Folgendes Asserts in der main schlagen alle fehl. Auch die Ausgabe der Speicheradresse zeigt beim Vergleich völlig unterschiedliche Werte.<br />
Was läuft schief?</p>
<pre><code class="language-cpp">int main()
{	
	// Tests auf CdequeElem
	swe3::CdequeElem&lt;int&gt; *pt;
	assert(pt-&gt;prev_ == 0 &amp;&amp; pt-&gt;next_ == 0);
	assert(pt-&gt;beg_ &lt; pt-&gt;end_);

        cout &lt;&lt; &quot;last:&quot; &lt;&lt; pt-&gt;last_ &lt;&lt; &quot;  first:&quot; &lt;&lt; pt-&gt;first_ &lt;&lt; endl;
	assert(pt-&gt;last_ == pt-&gt;first_);

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1477341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477341</guid><dc:creator><![CDATA[Mr.Question]]></dc:creator><pubDate>Wed, 19 Mar 2008 15:01:44 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung selbstgeschriebener Deque on Wed, 19 Mar 2008 15:24:02 GMT]]></title><description><![CDATA[<p>Danke hat sich erledigt. Hatte nur einen Pointer auf das Element, aber kein Element selbst erzeugt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477357</guid><dc:creator><![CDATA[Mr.Question]]></dc:creator><pubDate>Wed, 19 Mar 2008 15:24:02 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung selbstgeschriebener Deque on Wed, 19 Mar 2008 15:50:29 GMT]]></title><description><![CDATA[<p>?!</p>
<pre><code class="language-cpp">try {   
        p = new T[min_alloc_];
        if(!p) throw bad_alloc();
    } catch(...) { delete p; throw; }
</code></pre>
<p>... Du testest p auf new ... da kommst du nicht hin <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">try { p = new T[min_alloc_](); } catch (std::bad_alloc const&amp; ex)
{ throw; }
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477376</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 19 Mar 2008 15:50:29 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung selbstgeschriebener Deque on Wed, 19 Mar 2008 15:59:30 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>... Du testest p auf new ... da kommst du nicht hin <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> du musst in der tat an deinen formulierungen arbeiten...</p>
<p>abgesehen davon @OP:</p>
<pre><code class="language-cpp">// Versuch Speicher zu allokieren
    try {   
        p = new T[min_alloc_];
        if(!p) throw bad_alloc();
    } catch(...) { delete p; throw; }
</code></pre>
<p>damit allokierst du nicht nur speicher, sondern konstruierst auch gleich noch <code>min_alloc_</code> fertige objekte vom typ T. das wird spätestens dann fehlschlagen, wenn T sich nicht einfach so konstruieren lässt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477380</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Wed, 19 Mar 2008 15:59:30 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherverwaltung selbstgeschriebener Deque on Fri, 21 Mar 2008 10:29:10 GMT]]></title><description><![CDATA[<p>queer_boy schrieb:</p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> du musst in der tat an deinen formulierungen arbeiten...</p>
</blockquote>
<p>Er meint damit das new niemals 0 zurückgibt sondern sofort eine bad_alloc exception wirft. Deshalb erübrigt sich das</p>
<pre><code>if(!p) throw bad_alloc;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1478213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478213</guid><dc:creator><![CDATA[bad_alloc]]></dc:creator><pubDate>Fri, 21 Mar 2008 10:29:10 GMT</pubDate></item></channel></rss>