<?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[new, Speichermanagement und Adressen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Die vom new-Operator retournierte Adresse ist doch eindeutig (solange dazwischen nicht wieder Speicherplatz freigegeben wird).</p>
<p>Oder anders gesagt: wenn ich 2 Objekte o1 und o2 mit new anlege, dann liefert o1 == o2 garantiert false.</p>
<p>Soweit so gut, das war auch irgendwie klar. Aber: wenn ich ein Programm 2 Mal starte, dann kann es (wie einige von mir durchgeführte Tests bezeugen - sofern ich beim Ausgeben keinen Fehler gemacht habe) vorkommen, dass in beiden Prozessen die gleiche Adresse von new zurückkommt. Das hat sicher etwas mit dem Speichermanagement des Betriebssystems zu tun (logische vs. physische Adressen, etc.).</p>
<p>So, und jetzt zur Frage: wie ist das wenn ich von einer Applikation aus eine dynamische Bibliothek (DLL bzw. so unter Linux) verwende? Kann es dann vorkommen, dass in der Bibliothek und in der Applikation 2 gleiche Adressen vorkommen? Logisch wäre nein, weil es ja dann zu Fehlern kommen könnte, wenn Pointer zwischen Lib und App ausgetauscht werden, andererseits ist aber die DLL ein eigener Prozess.</p>
<p>Danke schonmal!</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146534/new-speichermanagement-und-adressen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 17:37:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146534.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 08 May 2006 16:21:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to new, Speichermanagement und Adressen on Mon, 08 May 2006 16:21:23 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Die vom new-Operator retournierte Adresse ist doch eindeutig (solange dazwischen nicht wieder Speicherplatz freigegeben wird).</p>
<p>Oder anders gesagt: wenn ich 2 Objekte o1 und o2 mit new anlege, dann liefert o1 == o2 garantiert false.</p>
<p>Soweit so gut, das war auch irgendwie klar. Aber: wenn ich ein Programm 2 Mal starte, dann kann es (wie einige von mir durchgeführte Tests bezeugen - sofern ich beim Ausgeben keinen Fehler gemacht habe) vorkommen, dass in beiden Prozessen die gleiche Adresse von new zurückkommt. Das hat sicher etwas mit dem Speichermanagement des Betriebssystems zu tun (logische vs. physische Adressen, etc.).</p>
<p>So, und jetzt zur Frage: wie ist das wenn ich von einer Applikation aus eine dynamische Bibliothek (DLL bzw. so unter Linux) verwende? Kann es dann vorkommen, dass in der Bibliothek und in der Applikation 2 gleiche Adressen vorkommen? Logisch wäre nein, weil es ja dann zu Fehlern kommen könnte, wenn Pointer zwischen Lib und App ausgetauscht werden, andererseits ist aber die DLL ein eigener Prozess.</p>
<p>Danke schonmal!</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053562</guid><dc:creator><![CDATA[ChrisR]]></dc:creator><pubDate>Mon, 08 May 2006 16:21:23 GMT</pubDate></item><item><title><![CDATA[Reply to new, Speichermanagement und Adressen on Mon, 08 May 2006 17:24:36 GMT]]></title><description><![CDATA[<p>hi,<br />
unter windoof hat jeder prozess seinen eigenen 'virtuellen' adressraum. d.h. verschiedene objekte können scheinbar die gleichen adressen haben, weil die adresse nur in dem jeweiligen prozess gültig ist. wo sich die objekte physikalisch befinden 'weiss' nur das os selber. dll's sind meistens 'shared ROM', also mehrere prozesse benutzen denselben code (er wird in den adressraum der prozesse eingeblendet) aber für alles veränderliche (variablen usw.) hat jeder prozess seinen eigenen (virtuellen)speicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053612</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Mon, 08 May 2006 17:24:36 GMT</pubDate></item><item><title><![CDATA[Reply to new, Speichermanagement und Adressen on Mon, 08 May 2006 17:33:03 GMT]]></title><description><![CDATA[<p>net schrieb:</p>
<blockquote>
<p>hi,<br />
unter windoof hat jeder prozess seinen eigenen 'virtuellen' adressraum. d.h. verschiedene objekte können scheinbar die gleichen adressen haben, weil die adresse nur in dem jeweiligen prozess gültig ist. wo sich die objekte physikalisch befinden 'weiss' nur das os selber. dll's sind meistens 'shared ROM', also mehrere prozesse benutzen denselben code (er wird in den adressraum der prozesse eingeblendet) aber für alles veränderliche (variablen usw.) hat jeder prozess seinen eigenen (virtuellen)speicher.</p>
</blockquote>
<p>Zu ergänzen sei da noch, dass diese shared dlls bzw. Speichersegmente nur so lange shared bleiben bis ein Prozess versucht da rein zu schreiben, dann bekommt er eine Kopie davon in seinen eigenen Adressraum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1053620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053620</guid><dc:creator><![CDATA[Dr. Prof]]></dc:creator><pubDate>Mon, 08 May 2006 17:33:03 GMT</pubDate></item><item><title><![CDATA[Reply to new, Speichermanagement und Adressen on Mon, 08 May 2006 18:12:25 GMT]]></title><description><![CDATA[<p>Und: Nein, die Adressen einer DLL die Du in Dein Programm lädst werden sich nicht mit Deinen überschneiden, jedenfalls normalerweise nicht, denn beim Laden einer DLL wird ihr ein (natürlich freier) Bereich des virtuellen Adressraums zugewiesen (anders gesagt die DLL wird in den Prozessraum eingeblendet)</p>
<p>Normalerweise weil: Diese Basisadressen lassen sich natürlich manipulieren, aber wer sowas tut weiss im Allgemeinen wofür <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/1053664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1053664</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 08 May 2006 18:12:25 GMT</pubDate></item></channel></rss>