<?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[RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!?]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hab da mal wieder ein Problem. Gegeben ist folgendes Szenario:</p>
<pre><code class="language-cpp">class Foo
{
private:
  int FuncA(void);
public:
  int FuncB(void);
}
</code></pre>
<p>Extern in einer Library FuncC(void *Parameter)</p>
<p>In FuncA und FuncB wird diese externe Funktion &quot;FuncC&quot; aufgerufen. Nun passiert folgendes bei den verschiedenen Calls:</p>
<p>1. FuncA call't FuncC -&gt; alles OK<br />
2. FuncA call't FuncB, die wiederrum FuncC call't -&gt; Parameter defekt.</p>
<p>Der Parameter ist in jedem Fall ein Array-of-char, das Innerhalb FuncA und FuncB unabhängig voneinander erstellt wird (lokale Variable in der jeweiligen Funktion).</p>
<p>Soweit ich das Debuggen konnte, zerstört der Aufruf der FuncC aus der FuncB heraus den Parameter. Also vor dem Aufruf der FuncC stimmt der Wert des Parameters bei beiden Aufrufen (in FuncA und FuncB), aber nur beim Aufruf aus FuncA heraus kommt der Parameter auch richtig in FuncC an.</p>
<p>FuncC-Aufrufe sind in beiden Fällen absolut identisch, genauso die Erzeugung des Parameters.</p>
<p>Woran könnte es liegen, das dieser Fehler Auftritt? FuncA und FuncB sind in einer gemeinsamen Klasse, nur private/public ist der Unterschied. Stört das das RAD Studio, und wenn ja, warum?</p>
<p>So, hoffe ich konnte das noch halbwegs erklären, ich hänge da schon seid 14 Stunden dran und hab echt keine Idee mehr...</p>
<p>Danke!!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204983/rad-studio-2007-c-übergebene-parameter-einer-funktion-werden-manchmal-zerstört</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 19:46:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204983.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 08 Feb 2008 22:11:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Fri, 08 Feb 2008 22:11:10 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hab da mal wieder ein Problem. Gegeben ist folgendes Szenario:</p>
<pre><code class="language-cpp">class Foo
{
private:
  int FuncA(void);
public:
  int FuncB(void);
}
</code></pre>
<p>Extern in einer Library FuncC(void *Parameter)</p>
<p>In FuncA und FuncB wird diese externe Funktion &quot;FuncC&quot; aufgerufen. Nun passiert folgendes bei den verschiedenen Calls:</p>
<p>1. FuncA call't FuncC -&gt; alles OK<br />
2. FuncA call't FuncB, die wiederrum FuncC call't -&gt; Parameter defekt.</p>
<p>Der Parameter ist in jedem Fall ein Array-of-char, das Innerhalb FuncA und FuncB unabhängig voneinander erstellt wird (lokale Variable in der jeweiligen Funktion).</p>
<p>Soweit ich das Debuggen konnte, zerstört der Aufruf der FuncC aus der FuncB heraus den Parameter. Also vor dem Aufruf der FuncC stimmt der Wert des Parameters bei beiden Aufrufen (in FuncA und FuncB), aber nur beim Aufruf aus FuncA heraus kommt der Parameter auch richtig in FuncC an.</p>
<p>FuncC-Aufrufe sind in beiden Fällen absolut identisch, genauso die Erzeugung des Parameters.</p>
<p>Woran könnte es liegen, das dieser Fehler Auftritt? FuncA und FuncB sind in einer gemeinsamen Klasse, nur private/public ist der Unterschied. Stört das das RAD Studio, und wenn ja, warum?</p>
<p>So, hoffe ich konnte das noch halbwegs erklären, ich hänge da schon seid 14 Stunden dran und hab echt keine Idee mehr...</p>
<p>Danke!!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1452316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1452316</guid><dc:creator><![CDATA[FrankBach]]></dc:creator><pubDate>Fri, 08 Feb 2008 22:11:10 GMT</pubDate></item><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Fri, 08 Feb 2008 22:18:27 GMT]]></title><description><![CDATA[<p>Könntest du mal ein vollständiges Minimalbeispiel, das dein Problem demonstriert, posten?</p>
<p>Ansonsten ist es ggf. ratsam, in der CPU-Ansicht mitzuverfolgen, was genau mit dem Parameter geschieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1452318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1452318</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Fri, 08 Feb 2008 22:18:27 GMT</pubDate></item><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Fri, 08 Feb 2008 23:03:49 GMT]]></title><description><![CDATA[<p>soooo.. dann mal ein paar codeschnippsel...</p>
<pre><code class="language-cpp">class DBFileDef
    {
        private:
            // ...
            int open_file(int reorganize, int restore);
            // ...
        public:
            // ...
            int reorganize_file(stdtypes::LongWord n_rec, int current_buflen, int current_versionnr);
            // ...
    };
</code></pre>
<pre><code class="language-cpp">int DBFileDef::open_file(int reorganize, int restore) {
    // ...
    FullNameTyp fullname; // um diesen Parameter gehts
    // ...
    memset(fullname,0,sizeof(fullname));
    fullnamecpy(fullname,m_Index);
    // ...
    err = BTRV(B_OPEN, ares::files[m_Index].posBlock, ares::files[m_Index].ownername, &amp;dLen, fullname, B_NORMAL); // hier klappt die übergabe
// ...
    err = reorganize_file(n_rec, current_fixlen, current_version); 
    // ...
</code></pre>
<pre><code class="language-cpp">int DBFileDef::reorganize_file(LongWord n_rec, int current_fixlen, int current_version) {
    // ...
    FullNameTyp  rf_fullname; // und um diesen
    // ...
    memset(rf_fullname,0,sizeof(rf_fullname));
    fullnamecpy(rf_fullname,m_Index);
    // ...
    err = BTRV(B_OPEN, ares::files[m_Index].posBlock, ares::files[m_Index].ownername, &amp;dLen, rf_fullname, READONLY);  // hier gehts schief
    // ...
</code></pre>
<p>Nur der Parameter &quot;rf_fullname&quot; geht kaputt, alles andere wird richtig übergeben...</p>
<p>in &quot;fullname&quot; und &quot;rf_fullname&quot; steht &quot;c:\\test\\daten.dta&quot;. Beim BTRV-Call in &quot;open_file&quot; bleibt das auch so, beim BTRV-Call in &quot;reorganize_file&quot; kommt inetwa &quot;\0\0€$§&amp;%st\\daten.dta&quot; an. Es wird immer der Anfang des Strings mit &quot;Müll&quot; überschrieben.</p>
<p>Was mich am meisten fertig macht, ist die Tatsache, das das ganze vor ca. 3 oder 4 Jahren zusammen mit &quot;virtual Realisticer&quot; entwickelt wurde (unter BCB6) und 100%ig auch funktionierte. Seither wurde diese Funktion aber nicht wirklich verwendet, und nu klappts nicht mehr. Obs am RAD Studio liegt?</p>
<p>Werde das mit der CPU-Ansicht mal am Montag versuchen, hier (auf der couch <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="😉"
    /> ) habe ich im Moment kein voll funktionsfähiges Development-System....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1452337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1452337</guid><dc:creator><![CDATA[FrankBach]]></dc:creator><pubDate>Fri, 08 Feb 2008 23:03:49 GMT</pubDate></item><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Fri, 08 Feb 2008 23:31:37 GMT]]></title><description><![CDATA[<p>Dein Code ist leider nicht vollständig. Wie ist FullNameTyp definiert; ist es ein POD-Typ, falls nicht, wie lauten die Konstruktoren, insbesondere der Kopierkonstruktor? Wie sieht die Funktionssignatur von BTRV() aus; ist die Funktion überladen?</p>
<p>Jedenfalls kann ich dir für solche Fälle das bereits erwähnte Debugging auf Assembler-Level sowie die Verwendung von Datenhaltepunkten nahelegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1452341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1452341</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Fri, 08 Feb 2008 23:31:37 GMT</pubDate></item><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Mon, 11 Feb 2008 08:37:38 GMT]]></title><description><![CDATA[<p>Hallo und guten Morgen,</p>
<p>ja, ich weis, ich wollte nur nicht den Rahmen sprengen... und es war schon spät in der nacht...oder früh am morgen....</p>
<p>Ich werde mich heute da nochmal schwerpunktmäßig durchdebuggen, und meine erkenntnisse dann posten...</p>
<p>erstmal vielen Dank!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453445</guid><dc:creator><![CDATA[FrankBach]]></dc:creator><pubDate>Mon, 11 Feb 2008 08:37:38 GMT</pubDate></item><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Mon, 11 Feb 2008 11:49:33 GMT]]></title><description><![CDATA[<p>Soooo,</p>
<p>Fehler weiter eingegrenzt. Es liegt NICHT am call der BTRV-Funktion, sondern am call einer beliebigen Funktion!!!</p>
<p>Habe mit einfach mal parallel zur lokalen Variable &quot;fullname&quot; bzw &quot;rf_fullname&quot; eine globale Variable angelegt, mit der ich genau das gleiche mache. Und siehe da, mit der globalen klappts. Und dann ist mir aufgefallen, das es Jacke-wie-Hose ist, was für eine Funktion ich zwischen &quot;fullnamecpy&quot; und &quot;BTRV&quot; in der Funktion &quot;reorganize_file&quot; aufrufe, alleine durch den Aufruf wird &quot;rf_fullname&quot; zerstört. Selbst wenn ich den Quellcode auf &quot;minimal&quot; ändere dann Tritt der Fehler nur in der funktion &quot;reorganize_file&quot; auf.</p>
<p>So, nun bin ich verwirrt...</p>
<p>Hier der &quot;minimierte&quot; Code, der genau den gleichen Fehler verursacht:</p>
<p>FullNameTyp ist ein char[98]<br />
fullnamecpy ist im prinzip nur ein strncpy</p>
<pre><code class="language-cpp">int DBFileDef::open_file(int reorganize, int restore) {
    FullNameTyp fullname;
    memset(fullname,0,sizeof(fullname));
    fullnamecpy(fullname,m_Index);
    err = BTRV(B_OPEN, ares::files[m_Index].posBlock, ares::files[m_Index].ownername, &amp;dLen, fullname, B_NORMAL); // hier klappt alles
    err = reorganize_file(n_rec, current_fixlen, current_version);
    return err;
}
</code></pre>
<pre><code class="language-cpp">int DBFileDef::reorganize_file(LongWord n_rec, int current_fixlen, int current_version) {
    FullNameTyp  rf_fullname;
    memset(rf_fullname,0,sizeof(rf_fullname));
    fullnamecpy(rf_fullname,m_Index);
    err = BTRV(B_OPEN, ares::files[m_Index].posBlock, ares::files[m_Index].ownername, &amp;dLen, rf_fullname, READONLY);  // hier ist &quot;rf_fullname&quot; kaputt
    return err;
}
</code></pre>
<p>Wenn ich nun die globale variable ins spiel bringe, dann klappts wieder:</p>
<pre><code class="language-cpp">int DBFileDef::reorganize_file(LongWord n_rec, int current_fixlen, int current_version) {
    FullNameTyp  rf_fullname;
    memset(rf_fullname,0,sizeof(rf_fullname));
    fullnamecpy(rf_fullname,m_Index);     // hier ist rf_fullname noch OK
    memset(glb_fullname,0,sizeof(glb_fullname)); // und hier nicht mehr
    fullnamecpy(glb_fullname,m_Index);          // glb_fullname klappt immer
    err = BTRV(B_OPEN, ares::files[m_Index].posBlock, ares::files[m_Index].ownername, &amp;dLen, glb_fullname, READONLY);  // damit gehts
    return err;
}
</code></pre>
<p>Dabei ist es egal welche (sinnvolle) reihenfolge ich einhalte, sobald nach &quot;fullnamecpy(rf_fullname,m_Index)&quot; eine funktion aufgerufen wird, ist die Variable &quot;rf_fullname&quot; kaputt.</p>
<p>Name habe ich schon mehrfach geändert, daran liegts nicht. Aus der CPU-Ansicht werde ich nicht so wirklich schlau, ich habe nur den Eindruck, das &quot;rf_fullname&quot; an einer (relativ) anderen Position im Speicher steht, als bei anderen aufrufen der BTRV-Funktion... Stolpert der Compiler da vieleicht über irgendwas? Aber wenn ich doch 2 Funktionen mit offensichtlich gleichem Quellcode habe, warum kommt es dann zu so einem Fehler?</p>
<p>Ich bin für jeden Tipp dankbar!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453543</guid><dc:creator><![CDATA[FrankBach]]></dc:creator><pubDate>Mon, 11 Feb 2008 11:49:33 GMT</pubDate></item><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Mon, 11 Feb 2008 15:46:07 GMT]]></title><description><![CDATA[<p>FrankBach schrieb:</p>
<blockquote>
<p>Dabei ist es egal welche (sinnvolle) reihenfolge ich einhalte, sobald nach &quot;fullnamecpy(rf_fullname,m_Index)&quot; eine funktion aufgerufen wird, ist die Variable &quot;rf_fullname&quot; kaputt.</p>
</blockquote>
<p>Dann schau dir mal an, was diese Funktion mit dem Stack anstellt. Es wäre z.B. denkbar, daß bei Implementation und Verwendung unterschiedliche Aufrufkonventionen verwendet werden, so daß die Parameter entweder überhaupt nicht oder zweimal vom Stack entfernt werden. Oder fullnamecpy() überschreibt mit dem strncpy()- oder memcpy()-Aufruf Parameter auf dem Stack.</p>
<p>Zeige mal die exakte Deklaration von fullnamecpy() sowie von FullNameTyp.</p>
<p>Grundsätzlich ist anzunehmen, daß sich viele deiner Probleme lösen, sobald du nicht mehr C, sondern C++ programmierst <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/1453757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453757</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Mon, 11 Feb 2008 15:46:07 GMT</pubDate></item><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Tue, 12 Feb 2008 08:28:21 GMT]]></title><description><![CDATA[<p>jetzt muss ich mich mal ganz blöd anstellen....</p>
<p>was meinst du damit? ich glaub ich bin schon so &quot;vermurkst&quot; durch den quelltext, das ich das nicht mehr so ganz auseinanderhalten kann.... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
<p>ich hab vor, ähm, 12 Jahren mal auf &quot;Turbo C++&quot; programmieren gelernt, aber ich glaube da hat sich so ein bischen was geändert ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1454148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1454148</guid><dc:creator><![CDATA[FrankBach]]></dc:creator><pubDate>Tue, 12 Feb 2008 08:28:21 GMT</pubDate></item><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Tue, 12 Feb 2008 09:19:36 GMT]]></title><description><![CDATA[<p>Die Frage ist einfach, was ist FullNameTyp?<br />
Warum brauchst du für diesen Typen memset und dies unbekannte Funktion fullnamecpy. Das ist eigentlich C-ähnlicher Syntax (wie bei char*). Bei einer ordentlichen Klasse braucht man derartige Verrenkungen nicht (Konstruktor, Zuweisungsoperator).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1454181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1454181</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 12 Feb 2008 09:19:36 GMT</pubDate></item><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Tue, 12 Feb 2008 09:56:20 GMT]]></title><description><![CDATA[<p>hm....</p>
<p>also fullnamecpy führt eine pfadangabe und einen dateinamen zu einem &quot;kompletten&quot; dateinamen zusammen und zwar so (bitte nicht schlagen):</p>
<pre><code class="language-cpp">static	std::string FullNameCpy( const char *Name, const char *Path )
		{
			std::string     FullName ( Path );

                if(FullName.empty())
                    return FullName;

				if ( FullName.at ( FullName.size () - 1 ) != OSPATHSEPA )
					FullName += OSPATHSEPA;

				FullName.insert ( FullName.length (), Name );

			return FullName;
		}

		void fullnamecpy(char *FullName, const char *Name, const char *Path)
		{
            std::string     NFullName = FullNameCpy ( Name, Path );
			memcpy ( FullName, NFullName.c_str (), NFullName.length () + 1 );
		}

		void fullnamecpy(char *FullName, int Index)
		{
		   if (ares::files[Index].flags &amp; FILEDEF_DDFFILE)
		      fullnamecpy(FullName, ares::files[Index].name, WWSGlb::Instance().wwsglb.path_ddf);
		   else if (ares::files[Index].flags &amp; FILEDEF_SYSFILE)
		      fullnamecpy(FullName, ares::files[Index].name, WWSGlb::Instance().wwsglb.path_system);
		   else
		      fullnamecpy(FullName, ares::files[Index].name, WWSGlb::Instance().wwsglb.path_data);

			return;
		}
</code></pre>
<p>denke mal ihr meint alle char* nach string zu &quot;übersetzen&quot;, oder?</p>
<p>Edit: Warum klappt das nie mit dem einrücken bei mir....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1454206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1454206</guid><dc:creator><![CDATA[FrankBach]]></dc:creator><pubDate>Tue, 12 Feb 2008 09:56:20 GMT</pubDate></item><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Tue, 12 Feb 2008 13:08:53 GMT]]></title><description><![CDATA[<p>Warum verwendest du nicht durchgängig std::string und schaufelst deine Daten ständig zwische string und char* hin und her?<br />
In fullnamecpy ist nicht sicher, dass in FullName überhaupt genug Speicher alloziert wurde um den String aufzunehmen. Zum Kopieren von char-Arrays nimmt man eh besser strncpy. Das achtet wenigstens auf das abschließende 0-Byte.<br />
Falls du viel mit Files (Filenamen etc.) hantieren musst und beim Standard bleiben willst schau di mal boost::filesystem an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1454356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1454356</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 12 Feb 2008 13:08:53 GMT</pubDate></item><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Wed, 13 Feb 2008 10:36:15 GMT]]></title><description><![CDATA[<p>so, ich wieder,</p>
<p>also das mit std::string steht jetzt ganz oben auf meiner Liste. Allerdings muss ich dafür ein paar tausend programmzeilen überarbeiten - und dafür ist im moment keine zeit.</p>
<p>ich hab' nun einfach den betreffenden &quot;string&quot; in das globale array, aus dem auch der name der datei komme, abgelegt. und so scheints zu funktionieren.</p>
<p>Warum der fehler auftritt ist mir allerdings immer noch nicht klar....egal, erstmal sind andere dinge wichtiger.</p>
<p>noch eine letzte frage: diese BTRV-Funktion verlangt den Dateinamen als &quot;void <em>&quot;, weil dieser Parameter auch für andere Sachen geutzt wird. (nein ich kann das nicht ändern, leider). wie bekomme ich nun den std::string nach void</em> gecastet? ich habs schon mit</p>
<pre><code class="language-cpp">const_cast&lt;void *&gt;(MeinString.c_str())
</code></pre>
<p>versucht, und variationen davon mit/ohne const. aber nur</p>
<pre><code class="language-cpp">(void *)MeinString.c_str()
</code></pre>
<p>konnte den Compiler besänftigen. Aber 2. Variante ist doch &quot;C&quot;, oder? &quot;C++&quot; wäre der const_cast?</p>
<p>Muss ehrlich gestehen, meine &quot;c++&quot; spezifischen Programmierkenntnise sind doch etwas magelhaft...</p>
<p>Dankeschön an alle Helfer!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1454959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1454959</guid><dc:creator><![CDATA[FrankBach]]></dc:creator><pubDate>Wed, 13 Feb 2008 10:36:15 GMT</pubDate></item><item><title><![CDATA[Reply to RAD Studio 2007 C++: Übergebene Parameter einer Funktion werden (manchmal) zerstört?!? on Wed, 13 Feb 2008 11:39:58 GMT]]></title><description><![CDATA[<p>Der richtige C++Cast hierfür heißt reinterpret_cast. Also:</p>
<pre><code class="language-cpp">reinterpret_cast&lt;void *&gt;(MeinString.c_str())
</code></pre>
<p>Das ist aber gefährlich, weil du erstens über die Gültigkeit dieses Zeigers in der Funktion keine Aussage machen kannst (Speicher könnte gleich danach freigegeben sein) und zweitens c_str einen const char* zurückgibt. Hier muss sicher sein, dass die Funktion da nichts hineienschreibt, da sie ja auch die Größe des allozierten Speichers nicht kennt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1454999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1454999</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 13 Feb 2008 11:39:58 GMT</pubDate></item></channel></rss>