<?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[in einer Dll Speicher für anderen Process reservieren]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>also ich hab folgendes vor:</p>
<p>Ich möchte in meinem Programm mehrere Sprachen unterstützen.<br />
Ich schreibe eine DLL in der ich als Resource ne Stringtable einbaue.<br />
die Dll bekommt bspw. den Namen GermanLang.dll<br />
jetzt lade ich mir den Eintrag XY aus der Stringtable über LoadString()<br />
(HINSTANCE ist die der DLL, logisch <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="😉"
    /> )...<br />
Jetzt würde ich gerne in die DLL eine Funktion einbauen, die:</p>
<p>1. den string aus der Stringtable sucht,<br />
2. einen übergebenen 'PSTR-Speicher' reserviert (denk is klar was gemeint ist^^)<br />
3. und dann den String aus der Table in den reservierten Buffer kopiert.</p>
<p>Nach dem man im Hauptprogramm nun die DLL geladen hat übergibt man lediglich der 'Laden-Fuktion' eine Zeigervar. diese wird dann von der DLL initialisiert und, nachdem man den String nicht mehr braucht gibt man den Speicher wieder frei...</p>
<p>SO, Meine Fragen:<br />
Wie reserviere ich Speicher für das aufrufende Programm(-modul) ?</p>
<p>PS: Bitte nich VirtualAlloc <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> , das muss doch auch anders gehen</p>
<p>Vielen großen lieben Dank im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/144993/in-einer-dll-speicher-für-anderen-process-reservieren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 22:21:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/144993.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Apr 2006 21:05:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to in einer Dll Speicher für anderen Process reservieren on Sun, 23 Apr 2006 21:05:46 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>also ich hab folgendes vor:</p>
<p>Ich möchte in meinem Programm mehrere Sprachen unterstützen.<br />
Ich schreibe eine DLL in der ich als Resource ne Stringtable einbaue.<br />
die Dll bekommt bspw. den Namen GermanLang.dll<br />
jetzt lade ich mir den Eintrag XY aus der Stringtable über LoadString()<br />
(HINSTANCE ist die der DLL, logisch <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="😉"
    /> )...<br />
Jetzt würde ich gerne in die DLL eine Funktion einbauen, die:</p>
<p>1. den string aus der Stringtable sucht,<br />
2. einen übergebenen 'PSTR-Speicher' reserviert (denk is klar was gemeint ist^^)<br />
3. und dann den String aus der Table in den reservierten Buffer kopiert.</p>
<p>Nach dem man im Hauptprogramm nun die DLL geladen hat übergibt man lediglich der 'Laden-Fuktion' eine Zeigervar. diese wird dann von der DLL initialisiert und, nachdem man den String nicht mehr braucht gibt man den Speicher wieder frei...</p>
<p>SO, Meine Fragen:<br />
Wie reserviere ich Speicher für das aufrufende Programm(-modul) ?</p>
<p>PS: Bitte nich VirtualAlloc <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> , das muss doch auch anders gehen</p>
<p>Vielen großen lieben Dank im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043669</guid><dc:creator><![CDATA[Mr. Kompliziert]]></dc:creator><pubDate>Sun, 23 Apr 2006 21:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to in einer Dll Speicher für anderen Process reservieren on Sun, 23 Apr 2006 22:04:43 GMT]]></title><description><![CDATA[<p>Wenn du die DLL geladen hast befindet sie sich im Addressraum von dem Prozess der sie geladen hat. Innerhalb der DLL Funktion kannst du mit den ganz normalen Memory funktionen arbeiten, allerdings sollte Speicher, denn die DLL alloziert, auch wieder von der DLL freigegeben werden...</p>
<p><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/memory_management_functions.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/memory_management_functions.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043688</guid><dc:creator><![CDATA[WebNubbi]]></dc:creator><pubDate>Sun, 23 Apr 2006 22:04:43 GMT</pubDate></item><item><title><![CDATA[Reply to in einer Dll Speicher für anderen Process reservieren on Mon, 24 Apr 2006 06:10:51 GMT]]></title><description><![CDATA[<p>Ich würde nicht empfehlen den Speicher in der DLL zu allokieren...<br />
I.d.R. macht man es so:</p>
<pre><code class="language-cpp">BOOL GetString(LPSTR szBuffer, LPDWORD pdwSize);
</code></pre>
<p>In einem ersten Aufruf zu &quot;GetString&quot; wird &quot;szBuffer&quot; auf NULL gesetzt und in &quot;pdwSize&quot; dann die erforderliche Länge zurückgegen.<br />
In einem zweiten Aufruf wird dann von der EXE zuerst der Speicher allokiert und dann entsprechend richtig übergeben.</p>
<p>Alternativ kannst Du sowohl in der EXE als auch der DLL die gleiche DLL-CRT verwenden und kannst dann z.B. CString oder std::string verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043722</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 24 Apr 2006 06:10:51 GMT</pubDate></item><item><title><![CDATA[Reply to in einer Dll Speicher für anderen Process reservieren on Mon, 24 Apr 2006 13:01:46 GMT]]></title><description><![CDATA[<p>also Danke erstmal für eure Posts <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>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5675">@Jochen</a> Kalmbach:</p>
<p>Jo verstehe was du meinst, aber diesen Vorgang (Speicher reservieren) sollte ja die DLL machen -&gt;: weniger Arbeit :p</p>
<p>Aber wenn ihr mir davon abräht ...OK dann eben nicht ...wär halt nur schön einfach gewesen:</p>
<p>LoadLangString(...);<br />
// benutzen<br />
UnloadLangString(...);</p>
<p>aber trotzdem danke <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="😉"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043986</guid><dc:creator><![CDATA[Mr. Kompliziert]]></dc:creator><pubDate>Mon, 24 Apr 2006 13:01:46 GMT</pubDate></item><item><title><![CDATA[Reply to in einer Dll Speicher für anderen Process reservieren on Mon, 24 Apr 2006 13:04:58 GMT]]></title><description><![CDATA[<p>Du kannst natürlich auch den Speicher in der DLL reservieren, dann kommt es darauf an, wer den Speicher wieder freigibt.<br />
Wenn die DLL den Speicher wieder freigibt (via eigene Funktion ala FreeString), dann kannst Du auch unterschiedliche CRTs verwenden. Wenn der Speicher in der EXE freigegeben werden soll, dann musst Du die gleiche CRT-DLL verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043988</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 24 Apr 2006 13:04:58 GMT</pubDate></item><item><title><![CDATA[Reply to in einer Dll Speicher für anderen Process reservieren on Mon, 24 Apr 2006 13:15:15 GMT]]></title><description><![CDATA[<p>ehh sry ....&quot;CRT&quot; was ist n das, in diesen Kontext ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>und ja ich denke genau das meine ich, in der DLL speicher allokieren (der auch von der DLL wieder freigeben wird)...kann ich denn dann auch von meinem Progg darauf zugriefen, und wie, einfach via Zeiger ?</p>
<p>Danke nochmal für deine Hilfe <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/1043996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043996</guid><dc:creator><![CDATA[Mr. Kompliziert]]></dc:creator><pubDate>Mon, 24 Apr 2006 13:15:15 GMT</pubDate></item><item><title><![CDATA[Reply to in einer Dll Speicher für anderen Process reservieren on Mon, 24 Apr 2006 13:31:32 GMT]]></title><description><![CDATA[<p>Mr. Kompliziert schrieb:</p>
<blockquote>
<p>ehh sry ....&quot;CRT&quot; was ist n das, in diesen Kontext ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
</blockquote>
<p>C-Runtime... das was eigentlich (fast) jedes C-Programm verwenden... (oder verwendest Du kein new/malloc/usw. !?)</p>
<p>Mr. Kompliziert schrieb:</p>
<blockquote>
<p>und ja ich denke genau das meine ich, in der DLL speicher allokieren (der auch von der DLL wieder freigeben wird)...kann ich denn dann auch von meinem Progg darauf zugriefen, und wie, einfach via Zeiger ?</p>
</blockquote>
<p>Ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044006</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 24 Apr 2006 13:31:32 GMT</pubDate></item><item><title><![CDATA[Reply to in einer Dll Speicher für anderen Process reservieren on Mon, 24 Apr 2006 13:53:04 GMT]]></title><description><![CDATA[<blockquote>
<p>oder verwendest Du kein new/malloc/usw. !?</p>
</blockquote>
<p>doch klar, wüsste nur nicht, dass das unter den Namen CTR fällt, also danke <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1044018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044018</guid><dc:creator><![CDATA[Mr. Kompliziert]]></dc:creator><pubDate>Mon, 24 Apr 2006 13:53:04 GMT</pubDate></item></channel></rss>