<?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[Programmgröße verringern]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein simples Programm in ASM geschrieben, welches beim Herunterfahren WLAN deaktiviert.<br />
Die Binary ist 5,5kb groß, im Speicher benötigt sie 2,1 MB!<br />
Ich würde gerne an der Zahl drehen, weis aber nicht so recht, wie ich das anstellen kann.<br />
Was verursacht derart verschwenderische Speicherauslastungen?</p>
<pre><code class="language-asm">include \masm32\include\windows.inc
include \masm32\include\wsock32.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\comdlg32.inc 
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\wsock32.lib
includelib \masm32\lib\comdlg32.lib 
include    \masm32\include\SHELL32.INC
includelib    \masm32\lib\SHELL32.LIB
include    \masm32\include\ADVAPI32.INC
includelib    \masm32\lib\ADVAPI32.lib
</code></pre>
<p>Liegt es daran, dass durch die vielen Includes zur Laufzeit alle DLLs geladen werden, obwohl sie unnötig sind?</p>
<p>Ich könnte dann näömlich hergehen und alle DLLs dynamisch laden zu dem Zeitpunkt, zu dem ich sie brauche.<br />
Dann brauch ich nur die Library, die die Funktion enthält zum Laden von DLLs.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242221/programmgröße-verringern</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 11:10:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242221.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Jun 2009 09:50:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programmgröße verringern on Mon, 01 Jun 2009 09:50:20 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein simples Programm in ASM geschrieben, welches beim Herunterfahren WLAN deaktiviert.<br />
Die Binary ist 5,5kb groß, im Speicher benötigt sie 2,1 MB!<br />
Ich würde gerne an der Zahl drehen, weis aber nicht so recht, wie ich das anstellen kann.<br />
Was verursacht derart verschwenderische Speicherauslastungen?</p>
<pre><code class="language-asm">include \masm32\include\windows.inc
include \masm32\include\wsock32.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\comdlg32.inc 
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\wsock32.lib
includelib \masm32\lib\comdlg32.lib 
include    \masm32\include\SHELL32.INC
includelib    \masm32\lib\SHELL32.LIB
include    \masm32\include\ADVAPI32.INC
includelib    \masm32\lib\ADVAPI32.lib
</code></pre>
<p>Liegt es daran, dass durch die vielen Includes zur Laufzeit alle DLLs geladen werden, obwohl sie unnötig sind?</p>
<p>Ich könnte dann näömlich hergehen und alle DLLs dynamisch laden zu dem Zeitpunkt, zu dem ich sie brauche.<br />
Dann brauch ich nur die Library, die die Funktion enthält zum Laden von DLLs.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1718948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1718948</guid><dc:creator><![CDATA[Biehler]]></dc:creator><pubDate>Mon, 01 Jun 2009 09:50:20 GMT</pubDate></item><item><title><![CDATA[Reply to Programmgröße verringern on Mon, 01 Jun 2009 10:49:16 GMT]]></title><description><![CDATA[<p>Biehler schrieb:</p>
<blockquote>
<p>Die Binary ist 5,5kb groß, im Speicher benötigt sie 2,1 MB!</p>
</blockquote>
<p>Woher hast du den Wert?<br />
Wie groß ist der Stack?</p>
<p>Die DLLs sind sowieso schon geladen, ich denke nicht dass die den Speicherbedarf großartig hochtreiben. 2,1 MB sind absolut gesehen auch nicht wirklich viel. Wenn ich von meinem Rechner ausgehe, sind das gerade mal ca. 0,05% des physikalischen Speichers - da passt dein Programm 2000 mal rein <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/1718966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1718966</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Mon, 01 Jun 2009 10:49:16 GMT</pubDate></item><item><title><![CDATA[Reply to Programmgröße verringern on Mon, 01 Jun 2009 14:49:19 GMT]]></title><description><![CDATA[<p>Biehler schrieb:</p>
<blockquote>
<p>Liegt es daran, dass durch die vielen Includes zur Laufzeit alle DLLs geladen werden, obwohl sie unnötig sind?</p>
</blockquote>
<p>ja</p>
<p>Biehler schrieb:</p>
<blockquote>
<p>Dann brauch ich nur die Library, die die Funktion enthält zum Laden von DLLs.</p>
</blockquote>
<p>die ist in jedem win32 prozess ohnehin mandatorisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719119</guid><dc:creator><![CDATA[Strandkanzler]]></dc:creator><pubDate>Mon, 01 Jun 2009 14:49:19 GMT</pubDate></item><item><title><![CDATA[Reply to Programmgröße verringern on Mon, 01 Jun 2009 16:41:12 GMT]]></title><description><![CDATA[<p>Ja, es sind die DLLs die so viel Speicher brauchen. Die DLLs dynamisch zu laden würde aber vermutlich nichts bringen, da der Linker unnötige Referenzen normalerweise wegwirft. Wenn er kann, was er in deinem Fall wohl wird.<br />
Du kannst ja einfach mal mittels DependencyWalker gucken welche DLLs geladen werden.</p>
<p>Davon abgesehen würde ich mir keinen Kopf machen. 2MB sind nichts, und vermutlich braucht dein Programm garnichtmal 2MB.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719181</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 01 Jun 2009 16:41:12 GMT</pubDate></item><item><title><![CDATA[Reply to Programmgröße verringern on Mon, 01 Jun 2009 17:08:27 GMT]]></title><description><![CDATA[<p>Gibt es da neben der puren Behauptung auch eine Begründung, warum die sowieso schon geladenen System-DLLs für den Speicherverbrauch verantwortlich sein sollen? Meines Erachtens wird der Speicher nicht zusätzlich belegt, sondern die DLLs werden in den virtuellen Speicherbereich des Prozesses eingeblendet, der sich entsprechend vergrößert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719192</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Mon, 01 Jun 2009 17:08:27 GMT</pubDate></item><item><title><![CDATA[Reply to Programmgröße verringern on Mon, 01 Jun 2009 17:22:33 GMT]]></title><description><![CDATA[<p>der OP redet von virtuellem speicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719199</guid><dc:creator><![CDATA[Strandkanzler]]></dc:creator><pubDate>Mon, 01 Jun 2009 17:22:33 GMT</pubDate></item><item><title><![CDATA[Reply to Programmgröße verringern on Mon, 01 Jun 2009 17:34:10 GMT]]></title><description><![CDATA[<p>Strandkanzler schrieb:</p>
<blockquote>
<p>der OP redet von virtuellem speicher.</p>
</blockquote>
<p>Nein, tut er nicht. Er redet von Speicherauslastung und Speicherbedarf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719213</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Mon, 01 Jun 2009 17:34:10 GMT</pubDate></item><item><title><![CDATA[Reply to Programmgröße verringern on Tue, 02 Jun 2009 21:29:31 GMT]]></title><description><![CDATA[<p>Registrierter Troll schrieb:</p>
<blockquote>
<p>Gibt es da neben der puren Behauptung auch eine Begründung, warum die sowieso schon geladenen System-DLLs für den Speicherverbrauch verantwortlich sein sollen? Meines Erachtens wird der Speicher nicht zusätzlich belegt, sondern die DLLs werden in den virtuellen Speicherbereich des Prozesses eingeblendet, der sich entsprechend vergrößert.</p>
</blockquote>
<p>Es gibt so viele verschiedene &quot;Speicher-Zahlen&quot;...<br />
Ich vermute er hat einfach die erstbeste hergenommen, die ihm im Task-Manager über den Weg gelaufen ist.</p>
<p>Davon abgesehen: einige System-DLLs legen einen per-process-state an (oder sogar per-thread). Der scheint dann sogar in den &quot;private bytes&quot; auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719997</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 02 Jun 2009 21:29:31 GMT</pubDate></item><item><title><![CDATA[Reply to Programmgröße verringern on Wed, 03 Jun 2009 06:05:43 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Ich vermute er hat einfach die erstbeste hergenommen, die ihm im Task-Manager über den Weg gelaufen ist.</p>
</blockquote>
<p>Möglicherweise. Deshalb auch meine Frage woher er den Wert hat.</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Davon abgesehen: einige System-DLLs legen einen per-process-state an (oder sogar per-thread).</p>
</blockquote>
<p>Ich halte es für mindestens ebenso wahrscheinlich, dass im PE-Header seiner .exe ein &quot;Stack reserve&quot;-Wert von 0x200000 steht, also der Standard-Wert IIRC.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720082</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Wed, 03 Jun 2009 06:05:43 GMT</pubDate></item><item><title><![CDATA[Reply to Programmgröße verringern on Wed, 03 Jun 2009 10:21:27 GMT]]></title><description><![CDATA[<p>Die Stack-Reserve Grösse scheint im &quot;erstbesten Wert vom Taskmanager&quot; garnicht auf <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 />
(Die Stack-Commit Grösse schon)<br />
Und Default ist 1MB, also 0x100000.</p>
<p>Dafür beinhalten diverse Task-Manager Werte AFAIK auch Speicherbereiche die garnicht &quot;private&quot; sind, sondern &quot;shared&quot;. D.h. man kann diese Werte auch nicht einfach aufsummieren. Und das wiederum heisst: es ist vollkommen egal ob dort 2MB oder 10MB steht, solange es grösstenteils &quot;shared&quot; Bereiche sind.</p>
<p>Genaueres sollte sich aber halbwegs einfach ergoogeln lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720218</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 03 Jun 2009 10:21:27 GMT</pubDate></item></channel></rss>