<?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[Mir fehlt es an Verständnis (Thema: Speicher)]]></title><description><![CDATA[<p>Hi,<br />
ich hab iwie grad immer Schiss, wenn es darum geht, Variablen zu setzen. Ich denk mir dann immer, was passiert, wenn die Variable die ich setzen will zuviel Speicherplatz benötigen würde?</p>
<p>Beispiel: Ich habe sagen wir mal einen Speicher von 12 Byte (ich weiss, dass das nicht mehr realistisch ist xD). Die ersten beiden Byte sind belegt, dann sind 3 Byte leer und nocheinmal 2 belegt. Wenn ich nun einen String habe, der 5 Byte lang ist, geht es sich ja aus, allerdings, was passiert, wenn der String 6 Byte oder mehr hat? Dann hat er ja eigentlich nicht mehr genügend Platz. Die 3 Byte die frei sind, sind eben nur 3 Byte und die letzten 5 Byte sind auch zu wenig. Was passiert dann?</p>
<p>Anderes Beispiel: Ich habe eine Datei, die ich interpretieren will, also wofür ich ein Programm schreibe, welches mir dann die Datei parst. Nehmen wir allerdings an, dass die gesamte Datei bereits 12MB gross ist und die Dateien die dazugeladen werden auch nochmal im gesamten 12MB gross sind. Wie geht man sowas am besten an? Ist es klug oder dumm die in den Hauptspeicher zu laden?</p>
<p>Liebe Grüsse <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/topic/238876/mir-fehlt-es-an-verständnis-thema-speicher</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 18:48:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238876.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Apr 2009 21:04:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mir fehlt es an Verständnis (Thema: Speicher) on Thu, 16 Apr 2009 21:04:06 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich hab iwie grad immer Schiss, wenn es darum geht, Variablen zu setzen. Ich denk mir dann immer, was passiert, wenn die Variable die ich setzen will zuviel Speicherplatz benötigen würde?</p>
<p>Beispiel: Ich habe sagen wir mal einen Speicher von 12 Byte (ich weiss, dass das nicht mehr realistisch ist xD). Die ersten beiden Byte sind belegt, dann sind 3 Byte leer und nocheinmal 2 belegt. Wenn ich nun einen String habe, der 5 Byte lang ist, geht es sich ja aus, allerdings, was passiert, wenn der String 6 Byte oder mehr hat? Dann hat er ja eigentlich nicht mehr genügend Platz. Die 3 Byte die frei sind, sind eben nur 3 Byte und die letzten 5 Byte sind auch zu wenig. Was passiert dann?</p>
<p>Anderes Beispiel: Ich habe eine Datei, die ich interpretieren will, also wofür ich ein Programm schreibe, welches mir dann die Datei parst. Nehmen wir allerdings an, dass die gesamte Datei bereits 12MB gross ist und die Dateien die dazugeladen werden auch nochmal im gesamten 12MB gross sind. Wie geht man sowas am besten an? Ist es klug oder dumm die in den Hauptspeicher zu laden?</p>
<p>Liebe Grüsse <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/1696918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696918</guid><dc:creator><![CDATA[Lumio]]></dc:creator><pubDate>Thu, 16 Apr 2009 21:04:06 GMT</pubDate></item><item><title><![CDATA[Reply to Mir fehlt es an Verständnis (Thema: Speicher) on Thu, 16 Apr 2009 21:14:29 GMT]]></title><description><![CDATA[<p>Also ich habe 2 Gigabyte Arbeitsspeicher, und nochmal n Gigabyte in der Auslagerungsdatei.</p>
<p>12 Megabyte sind bei sowas einfach garnichts. Und ein paar Byte erst recht nicht.</p>
<p>Anders gesagt: Vergiss all das einfach und mach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696923</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Thu, 16 Apr 2009 21:14:29 GMT</pubDate></item><item><title><![CDATA[Reply to Mir fehlt es an Verständnis (Thema: Speicher) on Thu, 16 Apr 2009 21:21:07 GMT]]></title><description><![CDATA[<p>Okay, aber nehmen wir mal an, es käme so ein Fall, wie würde das System darauf reagieren? (ich mein, hab auch bald 4GB RAM also wärs wirklich wurscht... dennoch)</p>
<p>Ansonsten danke <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="🙂"
    /> muss noch ziemlich lernen ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696928</guid><dc:creator><![CDATA[Lumio]]></dc:creator><pubDate>Thu, 16 Apr 2009 21:21:07 GMT</pubDate></item><item><title><![CDATA[Reply to Mir fehlt es an Verständnis (Thema: Speicher) on Thu, 16 Apr 2009 21:22:52 GMT]]></title><description><![CDATA[<p>dem stimme ich zu ich hatte auch noch nie wirklich so probleme mit dem speicher zwar hab ich keine ahnung wie das bei großen programmen aussieht aber ich glaube da wirds nicht so fatal ablaufen wie überall beschrieben... ne fehlermeldung und das programm wird beendet denk ich mal o_O<br />
edit:<br />
lol unbeabsichtigte express antwort xD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696929</guid><dc:creator><![CDATA[*lt**lt*set.ger]]></dc:creator><pubDate>Thu, 16 Apr 2009 21:22:52 GMT</pubDate></item><item><title><![CDATA[Reply to Mir fehlt es an Verständnis (Thema: Speicher) on Thu, 16 Apr 2009 21:35:23 GMT]]></title><description><![CDATA[<p>In der Speicherverwaltung reden die Betriebssysteme mit. Für new gibt es zB eine OutOfMemory Exception mit der das Programm sich verabschiedet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696935</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Thu, 16 Apr 2009 21:35:23 GMT</pubDate></item><item><title><![CDATA[Reply to Mir fehlt es an Verständnis (Thema: Speicher) on Thu, 16 Apr 2009 21:35:51 GMT]]></title><description><![CDATA[<p>also der prozessor kann eh nur 4 bytes auf einmal lesen. ob du da irgendwas auf 3 bytes zusammenschrumpfst, ist egal, ja sogar hinderlich. compiler fügen die bei 3-byte-strukturen dir noch ein vertes geheimbyte ein, damit die struktur im array schneller geladen werden kann. du wirst es nicht schaffen, per new nur 5 bytes zu belegen. es können gar nicht weniger als 32 bytes pro new-aufruf vom hauptspeicher abgezwackt werden. naja, mit einem small-object-allpcator könnte es gehen.</p>
<p>praktisch alle versuche, aug mikroebene speicher zu sparen, kosten dafür so viel geschwindigkeit, daß das sparsame programm am ende langsamer ist.</p>
<p>übrigens saugt es an der performance, wenn du zweimal durch eine datei gehst statt nur einmal. aber wenn zweimal sein muß, dann mach halt mit ram. da saugt es nicht an der gesamtperformance, wenn du 100M ins ram kopierst und drauf arbeitest, statt zweimal alles zu lesen. ist sogar schneller mit ram. und wenn du schnell fertig bist und den speicher schnell freigibst, hats keinen gestört. wenn du lahm bist, wird das betriebssystem schon irgendwann deinen speicher auslagern und anderen anwendungen leihen. kannst praktisch gar nix falschmachen. selbst zweimal-lesen statt ram ist ok, weil die daten ja nich im plattencache sind. ich würde mal sagen, alles unter 1M ist scheissegal. und mit allem unter 100M kannste dem betriebssystem und compiler ausreichend vertrauen, daß sie sichern, daß du bei der ungeschicktesten wahl der mittel unmöglich mehr als 40% lahmer bist als bei der wahl der geschicktesten mittel. dir geschicktesten mittel sind aber sehr schwierig zu programmieren und gefährlich in der hinsicht, daß ein falscher parameter die performance sofort in den keller schickt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696936</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 16 Apr 2009 21:35:51 GMT</pubDate></item><item><title><![CDATA[Reply to Mir fehlt es an Verständnis (Thema: Speicher) on Thu, 16 Apr 2009 21:36:38 GMT]]></title><description><![CDATA[<p>Lumio schrieb:</p>
<blockquote>
<p>Nehmen wir allerdings an, dass die gesamte Datei bereits 12MB gross ist und die Dateien die dazugeladen werden auch nochmal im gesamten 12MB gross sind. Wie geht man sowas am besten an? Ist es klug oder dumm die in den Hauptspeicher zu laden?</p>
</blockquote>
<p>Meist ist es sinnvoll, zuerst eine &quot;einfache&quot; Variante zu programmieren (hier wohl: Alles in den Speicher laden). Falls mögliche Speicherprobleme in Aussicht stehen oder das sonstwie unzureichend ist, kannst du immer noch ein anderes Verfahren implementieren (siehe auch <a href="http://de.wikipedia.org/wiki/KISS-Prinzip" rel="nofollow">KISS</a>).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696938</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 16 Apr 2009 21:36:38 GMT</pubDate></item><item><title><![CDATA[Reply to Mir fehlt es an Verständnis (Thema: Speicher) on Thu, 16 Apr 2009 22:33:05 GMT]]></title><description><![CDATA[<p>Xebov schrieb:</p>
<blockquote>
<p>In der Speicherverwaltung reden die Betriebssysteme mit. Für new gibt es zB eine OutOfMemory Exception mit der das Programm sich verabschiedet.</p>
</blockquote>
<p>Du meinst wohl <code>std::bad_alloc</code> , wir sind hier nicht in Java. <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>Aber praktisch hat man die sowieso kaum - und wenn, dann eher, weil man zu grosse Speicherblöcke an einem Stück anfordert. Aber zuerst wird das System schauen, dass es sich den Speicher beschaffen kann. Zum Testen kannst du ja mal schauen, wie lange so ein Programm läuft:</p>
<pre><code class="language-cpp">int main()
{
    for (;;) new int;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1696953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696953</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 16 Apr 2009 22:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to Mir fehlt es an Verständnis (Thema: Speicher) on Thu, 16 Apr 2009 22:56:26 GMT]]></title><description><![CDATA[<p>Ich denke man sollte sich überlegen was für eine Applikation man schreibt, und dann entscheiden wie man mit Speicher umgehen will.</p>
<p>Schreibe ich einen Datenbank-Server, dann muss ich mir wohl einiges zum Thema Speicherverwaltung überlegen. Einfach weil ich sehr viel Speicher für z.B. Cache nutzen möchte (d.h. bei 32 Bit Systemen schon ziemlich an die Grenze gehen), aber es nie-nie-nie passieren darf, dass für &quot;Kleinvieh&quot; kein Speicher mehr da ist. Das ist nicht einfach und im Endeffekt ein ziemlicher Aufwand. SQL Server geht z.B. soweit, die .NET Umgebung selbst zu hosten, damit er den Speicherverbrauch der .NET Umgebung genau kontrollieren/limitieren kann.<br />
Und... bei so einem Server wird es auch auf 64 Bit Systemen Sinn machen, den verwendeten Speicher zu limitieren. Weil es sicherlich besser ist man verwirft ein paar gecachte Einträge früher, als wenn das OS anfängt den Cache auszulagern.</p>
<p>Schreibe ich dagegen ein Programm, welches interaktiv verwendet wird, dessen Speicherverbrauch vom User abhängt (also z.B. was für Dateien der lädt/füttert), und was nicht notwendigerweise mit RIESEN Dateien klarkommen muss (Text-Editor, Grafikprogramm, ...), dann werde ich mich weniger (sprich: garnicht) darum kümmern, und einfach mal machen. Sollte ich so grob &quot;verschwendet&quot; haben, dass man dann nichtmal mehr ein z.B. 10MB grosses Textfile aufmachen kann, dann sehe ich das im Testbetrieb vermutlich relativ schnell. Und muss halt dann &quot;nachbessern&quot;.</p>
<p>Was Daten in Temp-Files auslagern angeht: macht IMO nur dann Sinn, wenn man auf einem 32 Bit System mit Daten arbeiten möchte, die in Summe grösser als ~1GB sind. Wobei die sinnvollere Alternative vermutlich die wäre, auf ein 64 Bit OS umzusteigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696963</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 16 Apr 2009 22:56:26 GMT</pubDate></item><item><title><![CDATA[Reply to Mir fehlt es an Verständnis (Thema: Speicher) on Fri, 17 Apr 2009 07:06:11 GMT]]></title><description><![CDATA[<p>Okay, naja ich will mich mal an einem Interpretor messen... mit PHP hab ich ja schon einen kleinen gebastelt, allerdings ist PHP so der schwachsinn, dass ich mal mich selbst dran setzen wollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697016</guid><dc:creator><![CDATA[Lumio]]></dc:creator><pubDate>Fri, 17 Apr 2009 07:06:11 GMT</pubDate></item></channel></rss>