<?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[wie erzeugt man ein handle]]></title><description><![CDATA[<p>für mich handle ist wie ein pointer, was auf eine interne Struktur zeigt, aber man kann nicht durch den pointer direkt auf member zugreifen, muss man immer mit lock und unlock machen.<br />
Wie wird ein handle erzeugt? und wie sieht memory managerment aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274646/wie-erzeugt-man-ein-handle</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 08:45:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274646.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Sep 2010 07:23:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 07:23:40 GMT]]></title><description><![CDATA[<p>für mich handle ist wie ein pointer, was auf eine interne Struktur zeigt, aber man kann nicht durch den pointer direkt auf member zugreifen, muss man immer mit lock und unlock machen.<br />
Wie wird ein handle erzeugt? und wie sieht memory managerment aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959321</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Thu, 30 Sep 2010 07:23:40 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 08:46:41 GMT]]></title><description><![CDATA[<p>netrobot schrieb:</p>
<blockquote>
<p>für mich handle ist wie ein pointer, was auf eine interne Struktur zeigt, aber man kann nicht durch den pointer direkt auf member zugreifen, muss man immer mit lock und unlock machen.<br />
Wie wird ein handle erzeugt? und wie sieht memory managerment aus?</p>
</blockquote>
<p>Ich verstehe weder deinen Text wirklich, noch (von dem was ich hinein interpretiere) irgendeinen Sinn darin. Ich gehe einfach davon aus das du hier viele Informationen vorenthältst, die für eine Antwort sinnvoll sind (oder dir die nötigen Deutschkenntnisse fehlen um es richtig zu beschreiben).</p>
<p>Was soll beispielsweise dein lock/unlock machen (für mich hört sich das nach irgendwelchen Sperrmechanismen an)? Memory Management ist auch sehr weiträumig um dir deine Frage zu beantworten usw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959374</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 30 Sep 2010 08:46:41 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 09:59:51 GMT]]></title><description><![CDATA[<p>netrobot schrieb:</p>
<blockquote>
<p>für mich handle ist wie ein pointer, was auf eine interne Struktur zeigt, aber man kann nicht durch den pointer direkt auf member zugreifen, muss man immer mit lock und unlock machen.<br />
Wie wird ein handle erzeugt? und wie sieht memory managerment aus?</p>
</blockquote>
<p>Die Idee eines Handles hast du ja bereits selbst beschrieben. Im Endeffekt kann ein Handle einfach ein Integer sein der durchnummeriert wird und auf eine (interne) Liste deiner Resourcen verweisst. Durch die Indirektion hast du dann keinen direkten Zugriff mehr auf deine Objekte.<br />
Ein sehr einfaches Beispiel:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;map&gt;

typedef unsigned int handle_t;

class FoobarManager;

class Foobar
{
	friend class FoobarManager;

public:
	const std::string &amp;GetName() const { return m_name; }

private:
	explicit Foobar(const std::string &amp;name)
		: m_name(name)
	{
	}

	std::string m_name;
};

class FoobarManager
{
	typedef std::map&lt;handle_t, Foobar&gt; handleList;

public:
	FoobarManager() : m_lastHandle(0)
	{
	}

	handle_t CreateFoobar(const std::string &amp;name)
	{
		m_handles.insert(std::make_pair(m_lastHandle, Foobar(name)));
		return m_lastHandle++; // überlauf beachten ;)
	}

	void PrintHandleToConsole(handle_t handle)
	{
		handleList::const_iterator it = m_handles.find(handle);
		if (it != m_handles.end()) {
			std::cout &lt;&lt; it-&gt;second.GetName() &lt;&lt; std::endl;
		}
	}

private:
	handleList m_handles;
	handle_t m_lastHandle;
};

int main (void)
{
	FoobarManager manager;
	handle_t hfoobar1 = manager.CreateFoobar(&quot;hallo welt&quot;);
	handle_t hfoobar2 = manager.CreateFoobar(&quot;foobar&quot;);
	manager.PrintHandleToConsole(hfoobar1);
	manager.PrintHandleToConsole(hfoobar2);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1959427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959427</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 30 Sep 2010 09:59:51 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 12:49:53 GMT]]></title><description><![CDATA[<p>super erklärt, eine andere frage:<br />
jedesmal wenn man new aufrufen, verursacht memory fragment, kann man irgendwie durch handle dies vermeiden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959540</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Thu, 30 Sep 2010 12:49:53 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 12:54:09 GMT]]></title><description><![CDATA[<p>netrobot schrieb:</p>
<blockquote>
<p>super erklärt, eine andere frage:<br />
jedesmal wenn man new aufrufen, verursacht memory fragment, kann man irgendwie durch handle dies vermeiden?</p>
</blockquote>
<p>Kannst du deinen Satz nochmal korrekt formulieren? So mit Subjekt, Prädikat, danach Objekt? Und korrekter Deklination und Konjugation? Ich habe keine Ahnung was eigentlich die Frage ist, bloß dass sie irgendwas mit &quot;new&quot;, &quot;handle&quot; und &quot;vermeiden&quot; zu tun hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959542</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 30 Sep 2010 12:54:09 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 13:01:04 GMT]]></title><description><![CDATA[<p>Klingt wie mit einem Uebersetzungstool ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959545</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 30 Sep 2010 13:01:04 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 13:07:43 GMT]]></title><description><![CDATA[<p>netrobot schrieb:</p>
<blockquote>
<p>super erklärt, eine andere frage:<br />
jedesmal wenn man new aufrufen, verursacht memory fragment, kann man irgendwie durch handle dies vermeiden?</p>
</blockquote>
<p>Das hat implizit nichts mit dem Konzept &quot;Handle&quot; zu tun. Das gehört eher in den Bereich &quot;Memory allocation/management&quot;. Da könntest du Speicherfragmentierung z.B. umgehend indem du Memorypools verwendest, oder Ähnliches...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959549</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 30 Sep 2010 13:07:43 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 13:11:26 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Klingt wie mit einem Uebersetzungstool ...</p>
</blockquote>
<p>Google Rückübersetzung nach Englisch schrieb:</p>
<blockquote>
<p>every time you call new, causing memory fragment, one can handle somehow avoid this?</p>
</blockquote>
<p>Google Rückübersetzung nach Französisch schrieb:</p>
<blockquote>
<p>chaque fois que vous nouvel appel, provoquant fragment de mémoire, on peut manipuler en quelque sorte d'éviter cela?</p>
</blockquote>
<p>Die beiden sind es wohl nicht im Original, wobei das Englisch schon fast verständlich ist (weil man das &quot;handle&quot; als Verb auffassen kann). Und außer den beiden kann ich nur noch Latein.</p>
<p>@Threadersteller: Viele hier verstehen auch andere Sprachen, falls dir das lieber ist. Jedenfalls verstehen wir das besser als falsches Deutsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959552</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 30 Sep 2010 13:11:26 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 13:41:11 GMT]]></title><description><![CDATA[<blockquote>
<p>Das hat implizit nichts mit dem Konzept &quot;Handle&quot; zu tun. Das gehört eher in den Bereich &quot;Memory allocation/management&quot;. Da könntest du Speicherfragmentierung z.B. umgehend indem du Memorypools verwendest, oder Ähnliches...</p>
</blockquote>
<p>wie kann man eine Application in einem bestimmten memory block laufen lassen?<br />
z.B.</p>
<pre><code class="language-cpp">int* m = new int [10];
</code></pre>
<p>dann die &amp;m ist vom platform memory managerment abhängig, man kann es nicht kontrollieren.</p>
<p>Nehmen wir an, ich will alle Allokationen die Adressen zwischen 0x1000 ~ 0xf000 haben, alleine mit &quot;new&quot; od &quot;alloc&quot; kann man es nicht schaffen.</p>
<p>Wie macht man es?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959571</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Thu, 30 Sep 2010 13:41:11 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 13:44:20 GMT]]></title><description><![CDATA[<p>placement new?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959575</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Thu, 30 Sep 2010 13:44:20 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 13:53:49 GMT]]></title><description><![CDATA[<blockquote>
<p>placement new?</p>
</blockquote>
<p>aber was sollte man dann schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959583</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Thu, 30 Sep 2010 13:53:49 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 14:09:50 GMT]]></title><description><![CDATA[<p>Die Frage ist schon Käse, weil du unter Windows keinen physikalischen Speicher bekommst, sondern virtuellen. Von daher macht es keinen Sinn, Speicher an festen Adressen allozieren zu wollen, um Speicherfragmentierung zu vermeiden. Du könntest einen eigenen Memory Manager programmieren, der einen festen Speicherblock bekommt und in diesem Block Objekte erzeugt.<br />
Was genau hast du denn vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959592</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 30 Sep 2010 14:09:50 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 14:12:35 GMT]]></title><description><![CDATA[<p>netrobot schrieb:</p>
<blockquote>
<blockquote>
<p>placement new?</p>
</blockquote>
<p>aber was sollte man dann schreiben?</p>
</blockquote>
<p>Dann machst du <code>new (/*Adresse zwischen 0x1000 und 0xf000*/) Typname</code> . Und dann fliegt dir das zu 99.9999% um die Ohren, weil diese Adressen entweder nicht gemapt sind ( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Segmentation fault) oder an dieser Stelle schon wer weiß was steht ( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> irgendein lustiger Absturz). Wenn du mit festen Adressen hantieren willst, musst du schon ganz genau wissen, was du da tust und musst auch einen sehr guten Grund dafür haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959595</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 30 Sep 2010 14:12:35 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 15:05:03 GMT]]></title><description><![CDATA[<blockquote>
<p>Du könntest einen eigenen Memory Manager programmieren, der einen festen Speicherblock bekommt und in diesem Block Objekte erzeugt.<br />
Was genau hast du denn vor?</p>
</blockquote>
<p>das ist genau was ich vorhabe.</p>
<blockquote>
<p>der einen festen Speicherblock bekommt</p>
</blockquote>
<p>schreibt man einfach</p>
<pre><code class="language-cpp">int* i = 0xffff000; ?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1959616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959616</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Thu, 30 Sep 2010 15:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 15:13:03 GMT]]></title><description><![CDATA[<blockquote>
<p>Wenn du mit festen Adressen hantieren willst, musst du schon ganz genau wissen, was du da tust und musst auch einen sehr guten Grund dafür haben.</p>
</blockquote>
<p>memory fragment ist z.b. ein grund</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959623</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Thu, 30 Sep 2010 15:13:03 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 15:27:00 GMT]]></title><description><![CDATA[<p>netrobot schrieb:</p>
<blockquote>
<p>schreibt man einfach</p>
<pre><code class="language-cpp">int* i = 0xffff000; ?
</code></pre>
</blockquote>
<p>netrobot schrieb:</p>
<blockquote>
<p>memory fragment ist z.b. ein grund</p>
</blockquote>
<p>Ich glaube du solltest lieber keinen Speichermanager schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959632</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 30 Sep 2010 15:27:00 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Thu, 30 Sep 2010 16:08:47 GMT]]></title><description><![CDATA[<p>Ein oder mehrere Elemente zu repräsentieren den Zustand eines Objekts Grafiken dar. Sie kennen die ganze Oberfläche des Objekts. Wenn der Status des Elements, die Zahlen. Auf der anderen Seite, muss das Objekt aus den Daten bleiben unabhängig - nicht wissen, das Interface sehr viel.</p>
<p>Zum Beispiel werden die Ergebnisse der Messungen gleichzeitig in einem Diagramm, Balkendiagramm und Tabelle angezeigt. Preise ändern sich ständig. Informationen über Diagramme stellen diese Änderungen dauerhaft das Messobjekt, haben aber keine Kenntnisse über die Struktur der Daten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959665</guid><dc:creator><![CDATA[Translate4U]]></dc:creator><pubDate>Thu, 30 Sep 2010 16:08:47 GMT</pubDate></item><item><title><![CDATA[Reply to wie erzeugt man ein handle on Fri, 01 Oct 2010 14:29:57 GMT]]></title><description><![CDATA[<p>Um das Zwischengesicht zu aktivieren drücken sie die Taste Macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960153</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 01 Oct 2010 14:29:57 GMT</pubDate></item></channel></rss>