<?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[Meshloader macht Probleme]]></title><description><![CDATA[<p>Hallo Leute ich hab gerade ein Problem, was wahrscheinlich leicht zu lösen sein wird, ich aber nach Tagelanger Arbeit an etwas anderem nicht mehr den Überblick habe, um das ganze zu lösen.</p>
<p>Ich war nebenbei beschäftigt einen Meshloader für ein eigenes Format zu schreiben, der mit kleinen Stücken arbeitet und so ziemlich flexibel für neues bleibt.</p>
<p>Jetzt habe ich zum Test einfach mal 3 Vertices in diese Datei gespeichert und diese von meinem Meshloader laden gelassen, und bekomme fast nur Müll raus.</p>
<p>Erstmal etwas code und dann die Erklärung <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>Programm zum Schreiben der Datei--&gt;</p>
<pre><code class="language-cpp">struct Vertex
{
	D3DXVECTOR3 pos;
	D3DXVECTOR2 tex;
};

enum MeshType
{
	GMESH_TYPE_VERTEX = 0,
	GMESH_TYPE_INDEX,
	GMESH_TYPE_MATERIAL
};

struct ChunckHeader
{
	MeshType _chuncktype;
	DWORD _chunckSize;
};

struct VertexChunck
{
	DWORD _num;
	DWORD _singlesize;
};

int main()
{

	ofstream out(&quot;model.gsm&quot;,ios::out|ios::binary);

        Vertex v[3];
	v[0].pos = D3DXVECTOR3(-1.0f, -1.0f, 0.0f);
	v[0].tex = D3DXVECTOR2(0.0f, 1.0f);

	v[1].pos = D3DXVECTOR3(0.0f, 1.0f , 0.0f);
	v[1].tex = D3DXVECTOR2(0.5f, 0.0f); 

	v[2].pos = D3DXVECTOR3(1.0f, -1.0f, 0.0f);
	v[2].tex = D3DXVECTOR2(1.0f, 1.0f);

	VertexChunck vert_chunck;
	vert_chunck._num = 3;
	vert_chunck._singlesize = sizeof(Vertex);

	ChunckHeader vert;

	vert._chunckSize = sizeof(vert_chunck);
	vert._chuncktype = GMESH_TYPE_VERTEX;

	out.seekp(0, ios::beg);
	out.write(reinterpret_cast&lt;char*&gt;(&amp;vert),sizeof(ChunckHeader));
	out.write(reinterpret_cast&lt;char*&gt;(&amp;vert_chunck),sizeof(VertexChunck));
	out.write(reinterpret_cast&lt;char*&gt;(&amp;v),sizeof(Vertex) * ARRAYSIZE(v) );

	out.close();
</code></pre>
<p>Es wird dabei so vorgegangen, dass man immer diese ChunckHeader Teile liest.Danach bekommt man den Typ des folgenden Anteils und seine Größe.<br />
Jetzt leist man das ganze wieder in eine Struktur je nach Typ (z.B in den VertexChunck) und bekommt entgültige Daten wie die Anzahl kommender Vertices und desen Größe.</p>
<p>Das ist zum Lesen:</p>
<pre><code class="language-cpp">std::ifstream File_Stream(c-&gt;path.c_str(),std::ios::in | std::ios::ate | std::ios::binary );  //Öffne Datei im binären mode und setzte positionszeiger ans ende
	File_Stream.seekg(0, std::ios::beg);

	std::ofstream a(&quot;Engine.txt&quot;,std::ios::out);

	if(File_Stream.good() )
	{

		while( !File_Stream.eof() )
		{
			ChunckHeader _chunckHeader;

			File_Stream.read(reinterpret_cast&lt;char*&gt;(&amp;_chunckHeader),sizeof(ChunckHeader)); 

			switch(_chunckHeader._chunckType)
			{
			case GMESH_TYPE_VERTICES:

				VertexChunck _vertexChunck;

				if(File_Stream.read(reinterpret_cast&lt;char*&gt;(&amp;_vertexChunck), sizeof(_chunckHeader._chunckSize)))
				{
					int _num = static_cast&lt;int&gt;(_vertexChunck._number);
					a &lt;&lt; _num &lt;&lt; std::endl;
					Vertex *_tempvertex = new Vertex[_num];
					File_Stream.read(reinterpret_cast&lt;char*&gt;(&amp;_tempvertex), sizeof(_vertexChunck._singleSize) * _vertexChunck._number);
					a &lt;&lt; &quot;Size 1:&quot; &lt;&lt; sizeof(_vertexChunck._singleSize) * _vertexChunck._number &lt;&lt; &quot; Size 2:&quot; &lt;&lt; sizeof(&amp;_tempvertex) &lt;&lt; std::endl;

					for(int i = 0; i &lt; _num; i++)
					{
						a &lt;&lt; &quot;X:&quot; &lt;&lt; _tempvertex[i].position.x &lt;&lt; &quot; Y:&quot; &lt;&lt; _tempvertex[i].position.y &lt;&lt; &quot; Z:&quot; &lt;&lt; _tempvertex[i].position.z &lt;&lt; std::endl;
					}

				}

				break;
			default:
				File_Stream.seekg(_chunckHeader._chunckSize,std::ios::cur);  //Falls nicht erkannt einfach überspringen
			};

		}
	}
	else
	{
		return 1;
	}
</code></pre>
<p>Hier wird das ganze gelesen.Was komisch ist ich bekomme als erstes einmal einen Vertexchunck und kann die Anzahl Vertices rausfinden (_num) was auch richtig ist wenn ich es lese.Dann erstelle ich ein dynamisches Array aus der Vertex struktur und lese das ganze dort ein. Wenn ich versuche dass dan auszugeben bekomme ich ein ÄLaufzeitfehler von wegen Memory oder sowas.Obwohl ich nur einmal diesen Vertex chunbck in die Datei geschrieben habe kommt der irgendwie 2 mal dazu das ganze zu lesen.</p>
<p>Ich hoffe mir kann da einer bei diesem Roman helfen und einen Fehler beim schreiben / lesen finden <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>
<p>Dankeschön</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307271/meshloader-macht-probleme</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 20:50:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307271.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Aug 2012 19:54:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Meshloader macht Probleme on Tue, 21 Aug 2012 19:54:03 GMT]]></title><description><![CDATA[<p>Hallo Leute ich hab gerade ein Problem, was wahrscheinlich leicht zu lösen sein wird, ich aber nach Tagelanger Arbeit an etwas anderem nicht mehr den Überblick habe, um das ganze zu lösen.</p>
<p>Ich war nebenbei beschäftigt einen Meshloader für ein eigenes Format zu schreiben, der mit kleinen Stücken arbeitet und so ziemlich flexibel für neues bleibt.</p>
<p>Jetzt habe ich zum Test einfach mal 3 Vertices in diese Datei gespeichert und diese von meinem Meshloader laden gelassen, und bekomme fast nur Müll raus.</p>
<p>Erstmal etwas code und dann die Erklärung <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>Programm zum Schreiben der Datei--&gt;</p>
<pre><code class="language-cpp">struct Vertex
{
	D3DXVECTOR3 pos;
	D3DXVECTOR2 tex;
};

enum MeshType
{
	GMESH_TYPE_VERTEX = 0,
	GMESH_TYPE_INDEX,
	GMESH_TYPE_MATERIAL
};

struct ChunckHeader
{
	MeshType _chuncktype;
	DWORD _chunckSize;
};

struct VertexChunck
{
	DWORD _num;
	DWORD _singlesize;
};

int main()
{

	ofstream out(&quot;model.gsm&quot;,ios::out|ios::binary);

        Vertex v[3];
	v[0].pos = D3DXVECTOR3(-1.0f, -1.0f, 0.0f);
	v[0].tex = D3DXVECTOR2(0.0f, 1.0f);

	v[1].pos = D3DXVECTOR3(0.0f, 1.0f , 0.0f);
	v[1].tex = D3DXVECTOR2(0.5f, 0.0f); 

	v[2].pos = D3DXVECTOR3(1.0f, -1.0f, 0.0f);
	v[2].tex = D3DXVECTOR2(1.0f, 1.0f);

	VertexChunck vert_chunck;
	vert_chunck._num = 3;
	vert_chunck._singlesize = sizeof(Vertex);

	ChunckHeader vert;

	vert._chunckSize = sizeof(vert_chunck);
	vert._chuncktype = GMESH_TYPE_VERTEX;

	out.seekp(0, ios::beg);
	out.write(reinterpret_cast&lt;char*&gt;(&amp;vert),sizeof(ChunckHeader));
	out.write(reinterpret_cast&lt;char*&gt;(&amp;vert_chunck),sizeof(VertexChunck));
	out.write(reinterpret_cast&lt;char*&gt;(&amp;v),sizeof(Vertex) * ARRAYSIZE(v) );

	out.close();
</code></pre>
<p>Es wird dabei so vorgegangen, dass man immer diese ChunckHeader Teile liest.Danach bekommt man den Typ des folgenden Anteils und seine Größe.<br />
Jetzt leist man das ganze wieder in eine Struktur je nach Typ (z.B in den VertexChunck) und bekommt entgültige Daten wie die Anzahl kommender Vertices und desen Größe.</p>
<p>Das ist zum Lesen:</p>
<pre><code class="language-cpp">std::ifstream File_Stream(c-&gt;path.c_str(),std::ios::in | std::ios::ate | std::ios::binary );  //Öffne Datei im binären mode und setzte positionszeiger ans ende
	File_Stream.seekg(0, std::ios::beg);

	std::ofstream a(&quot;Engine.txt&quot;,std::ios::out);

	if(File_Stream.good() )
	{

		while( !File_Stream.eof() )
		{
			ChunckHeader _chunckHeader;

			File_Stream.read(reinterpret_cast&lt;char*&gt;(&amp;_chunckHeader),sizeof(ChunckHeader)); 

			switch(_chunckHeader._chunckType)
			{
			case GMESH_TYPE_VERTICES:

				VertexChunck _vertexChunck;

				if(File_Stream.read(reinterpret_cast&lt;char*&gt;(&amp;_vertexChunck), sizeof(_chunckHeader._chunckSize)))
				{
					int _num = static_cast&lt;int&gt;(_vertexChunck._number);
					a &lt;&lt; _num &lt;&lt; std::endl;
					Vertex *_tempvertex = new Vertex[_num];
					File_Stream.read(reinterpret_cast&lt;char*&gt;(&amp;_tempvertex), sizeof(_vertexChunck._singleSize) * _vertexChunck._number);
					a &lt;&lt; &quot;Size 1:&quot; &lt;&lt; sizeof(_vertexChunck._singleSize) * _vertexChunck._number &lt;&lt; &quot; Size 2:&quot; &lt;&lt; sizeof(&amp;_tempvertex) &lt;&lt; std::endl;

					for(int i = 0; i &lt; _num; i++)
					{
						a &lt;&lt; &quot;X:&quot; &lt;&lt; _tempvertex[i].position.x &lt;&lt; &quot; Y:&quot; &lt;&lt; _tempvertex[i].position.y &lt;&lt; &quot; Z:&quot; &lt;&lt; _tempvertex[i].position.z &lt;&lt; std::endl;
					}

				}

				break;
			default:
				File_Stream.seekg(_chunckHeader._chunckSize,std::ios::cur);  //Falls nicht erkannt einfach überspringen
			};

		}
	}
	else
	{
		return 1;
	}
</code></pre>
<p>Hier wird das ganze gelesen.Was komisch ist ich bekomme als erstes einmal einen Vertexchunck und kann die Anzahl Vertices rausfinden (_num) was auch richtig ist wenn ich es lese.Dann erstelle ich ein dynamisches Array aus der Vertex struktur und lese das ganze dort ein. Wenn ich versuche dass dan auszugeben bekomme ich ein ÄLaufzeitfehler von wegen Memory oder sowas.Obwohl ich nur einmal diesen Vertex chunbck in die Datei geschrieben habe kommt der irgendwie 2 mal dazu das ganze zu lesen.</p>
<p>Ich hoffe mir kann da einer bei diesem Roman helfen und einen Fehler beim schreiben / lesen finden <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>
<p>Dankeschön</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244239</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Tue, 21 Aug 2012 19:54:03 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Tue, 21 Aug 2012 22:20:21 GMT]]></title><description><![CDATA[<p>Immer der gleiche Fehler, woher kommt diese Seuche?</p>
<pre><code class="language-cpp">while (not eof(datei))
{
 lese(datei);
 verarbeite;
}
</code></pre>
<p>Diese Ausleselogik war mal vor 40 Jahren in Pascal richtig, aber in sonst keiner anderen Sprache die ich kenne. Eine Datei weiß nicht im Voraus, dass sie am Ende ist, das stellt sie nach dem (fehlgeschlagenen) Lesen fest.</p>
<pre><code class="language-cpp">while (lese(datei))
{
 verarbeite;
}
</code></pre>
<p>So geht das.</p>
<p>Zu deinem Code: Ich schätze du bekommst gleich noch massenhaft Kommentare zu den ganzen Casts (noch dazu reinterpret_casts) und dem new[]. Merke: Casts deuten auf Fehler im Design hin. Hier fehlen deinen Klassen saubere Streamoperatoren (die dürfen auch gerne ein Binärformat benutzen, wenn du möchtest) und new[] ist immer das schlechtere vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244255</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 21 Aug 2012 22:20:21 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Wed, 22 Aug 2012 07:06:42 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">VertexChunck _vertexChunck;
File_Stream.read(reinterpret_cast&lt;char*&gt;(&amp;_vertexChunck)

vs.

Vertex *_tempvertex = new Vertex[_num];
File_Stream.read(reinterpret_cast&lt;char*&gt;(&amp;_tempvertex)
</code></pre>
<p>mach doch eine Schleife von 0 bis _num, dann kannste alles schön auf dem Stack lassen und schreibst nicht an die falschen Bereiche.</p>
<p>greetz KN4CK3R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244289</guid><dc:creator><![CDATA[KN4CK3R]]></dc:creator><pubDate>Wed, 22 Aug 2012 07:06:42 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Wed, 22 Aug 2012 08:17:41 GMT]]></title><description><![CDATA[<p>Hmmm also wegen dem Design wundere ich mich, da ich das ganze in dem Buch von David Scherfgen ( DirectX Programmieren....) gelesen hab und das ganz gut sein soll.</p>
<p>Könnt ihr mir den ein anderes Design vorschlagen als mit den Chuncks, was besser ist oder war einfach nur diese Stelle mit dem Lesen falsch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244311</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 22 Aug 2012 08:17:41 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Wed, 22 Aug 2012 08:40:59 GMT]]></title><description><![CDATA[<p>Okey jetzt gehts ohne die Instanzierung der Struktur.Ich habe mal aus Interesse die Größe des puffers abgefragt.</p>
<p>Ich speichere 3 Vertices in meiner Datei, wobei eins 4 Byte groß ist, was auf 12 Bytes kommt. Ich erstelle ja den puffer dynamisch mit der Anzahl der Vertices , aber mit sizeof bekomme ich nur 4 Bytes , als ob das nur einer währe.</p>
<p>Wie genau könnte man das ohne das reinterpret_cast machen ???<br />
Ich hatte die Idee einen void Zeiger zu erstellen (quasie eine virtuelle Datei ) und dort zuerst die gesammte datei reinzukopieren und von dort aus dan parsen....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244323</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 22 Aug 2012 08:40:59 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Wed, 22 Aug 2012 08:48:49 GMT]]></title><description><![CDATA[<p>sizeof(zeiger) = 4 != 12<br />
Der reinterpret_cast beim Lesen/Schreiben würde mich bei einem POD Datentyp nicht sonderlich stören.</p>
<p>greetz KN4CK3R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244328</guid><dc:creator><![CDATA[KN4CK3R]]></dc:creator><pubDate>Wed, 22 Aug 2012 08:48:49 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Wed, 22 Aug 2012 08:56:56 GMT]]></title><description><![CDATA[<p>Bob Wolfskin schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int main()
{

	ofstream out(&quot;model.gsm&quot;,ios::out|ios::binary);

        Vertex v[3];

	// ...

	out.write(reinterpret_cast&lt;char*&gt;(&amp;v),sizeof(Vertex) * ARRAYSIZE(v) );

	// ...
</code></pre>
</blockquote>
<p>Jo, moin!<br />
Wie is'n ARRAYSIZE definiert? (Und warum?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244333</guid><dc:creator><![CDATA[Makro?]]></dc:creator><pubDate>Wed, 22 Aug 2012 08:56:56 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Wed, 22 Aug 2012 14:33:10 GMT]]></title><description><![CDATA[<p>Okey hab jetzt reinterpret_cast gegen (char*)&amp;blah ersetzt.<br />
ARRAYSIZE is ein Macro was angibt wieviel Elemente ein array hat ( hier 3 Stück )</p>
<p>Ich wundere mich einfach warum dasm it dem Array pointer nicht geht, was nicht so gut ist, da ich später zum ausfüllen Puffers ein solches dynamisches Array brauche.</p>
<p>Die Frage ist warum folgendes verschiedene größen angibt.</p>
<pre><code class="language-cpp">int _num = 3;
Vertex* a = new Vertex[_num]; // das sind jetzt 3 Stück je 4 Bytes
cout &lt;&lt; sizeof(a) &lt;&lt; endl; // Größe des Arrays
cout &lt;&lt; sizeof(Vertex) * 3 &lt;&lt; endl; // Die richtige Größe jedoch größer als das Array
</code></pre>
<p>Müsste ja eigendlich Vertex = 4 Bytes -&gt; * 3 = 12 Bytes müssten es sein aber wenn ich Vertex* a= new Vertex[3]; erstelle bekomme ich nur 4 Bytes (liegt vieleicht daran dass die nicht ausgefüllt sind ?? )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244448</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 22 Aug 2012 14:33:10 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Wed, 22 Aug 2012 15:14:24 GMT]]></title><description><![CDATA[<p>Bob Wolfskin schrieb:</p>
<blockquote>
<p>Die Frage ist warum folgendes verschiedene größen angibt.</p>
<pre><code class="language-cpp">int _num = 3;
Vertex* a = new Vertex[_num]; // das sind jetzt 3 Stück je 4 Bytes
cout &lt;&lt; sizeof(a) &lt;&lt; endl; // Größe des Arrays
cout &lt;&lt; sizeof(Vertex) * 3 &lt;&lt; endl; // Die richtige Größe jedoch größer als das Array
</code></pre>
</blockquote>
<p>Die Antwort ist:</p>
<pre><code class="language-cpp">sizeof(a) == sizeof(Vertex*) // a ist ein Vertex*
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2244463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244463</guid><dc:creator><![CDATA[Makro?]]></dc:creator><pubDate>Wed, 22 Aug 2012 15:14:24 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Wed, 22 Aug 2012 15:22:52 GMT]]></title><description><![CDATA[<p>Aber durch die Instanzierung werden doch 3 Elemente reserviert oder icht ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244467</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Wed, 22 Aug 2012 15:22:52 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Wed, 22 Aug 2012 15:27:24 GMT]]></title><description><![CDATA[<p>Bob Wolfskin schrieb:</p>
<blockquote>
<p>Aber durch die Instanzierung werden doch 3 Elemente reserviert oder icht ?</p>
</blockquote>
<p>Ja, aber die Information über die Größe des Arrays ist nicht über 'a' zu erreichen.<br />
Die musst Du irgendwie mitschleppen.</p>
<p>PS: Der Compiler ist Dir hier klar im Vorteil, weil der nämlich die Größe für <code>delete [] a;</code> wieder auslesen kann...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244470</guid><dc:creator><![CDATA[Makro?]]></dc:creator><pubDate>Wed, 22 Aug 2012 15:27:24 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Wed, 22 Aug 2012 15:59:15 GMT]]></title><description><![CDATA[<p>Es gibt da so eine Klasse in der Standardbibliothek, die die Größe mitschleppt und sich automatisch um das new und delete kümmert....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244485</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 22 Aug 2012 15:59:15 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Wed, 22 Aug 2012 16:29:11 GMT]]></title><description><![CDATA[<p>Bob Wolfskin schrieb:</p>
<blockquote>
<p>Aber durch die Instanzierung werden doch 3 Elemente reserviert oder icht ?</p>
</blockquote>
<p>Dadurch wird der Pointer selber aber nicht größer. Nur der reservierte Speicher, auf den er zeigt.</p>
<p>Makro? schrieb:</p>
<blockquote>
<p>Der Compiler ist Dir hier klar im Vorteil, weil der nämlich die Größe für <code>delete [] a;</code> wieder auslesen kann...</p>
</blockquote>
<p>Streng genommen ist das nicht der Compiler, aber ich hab heute schon genug Haare gespalten <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>SeppJ schrieb:</p>
<blockquote>
<p>Es gibt da so eine Klasse in der Standardbibliothek, die die Größe mitschleppt und sich automatisch um das new und delete kümmert....</p>
</blockquote>
<p>Kschsch. Du willst hier doch niemanden zu sauberem C++ verführen, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244501</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 22 Aug 2012 16:29:11 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Wed, 22 Aug 2012 16:38:26 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Makro? schrieb:</p>
<blockquote>
<p>Der Compiler ist Dir hier klar im Vorteil, weil der nämlich die Größe für <code>delete [] a;</code> wieder auslesen kann...</p>
</blockquote>
<p>Streng genommen ist das nicht der Compiler, aber ich hab heute schon genug Haare gespalten <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>
</blockquote>
<p>Fiel mir auch auf, aber:<br />
Ohne Registrierung keine Editierung...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244507</guid><dc:creator><![CDATA[Makro?]]></dc:creator><pubDate>Wed, 22 Aug 2012 16:38:26 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Thu, 23 Aug 2012 13:53:38 GMT]]></title><description><![CDATA[<p>Ich könnte das ganze auch folgenderweise machen:<br />
(Wird jedoch nicht auf dem Stack sondern auf dem Heap verbleiben)</p>
<pre><code class="language-cpp">Vertex *v = (Vertex*)malloc(sizeof(*v));
new (v) Vertex();  //oder so ähnlich
</code></pre>
<p>Dabei wird direkt der Speicherbereich reserviert <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 />
Ist aber vollkommen unnötig</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244775</guid><dc:creator><![CDATA[Bob Wolfskin]]></dc:creator><pubDate>Thu, 23 Aug 2012 13:53:38 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Thu, 23 Aug 2012 13:59:23 GMT]]></title><description><![CDATA[<p>Nenn mal einen einzigen Vorteil von malloc/placement new gegenüber &quot;normalem&quot; new und einen einzigen Vorteil von new genenüber std::vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244778</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 23 Aug 2012 13:59:23 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Thu, 23 Aug 2012 14:15:23 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Nenn mal einen einzigen Vorteil von malloc/placement new gegenüber &quot;normalem&quot; new</p>
</blockquote>
<p>Man kann reallozieren. <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/2244783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244783</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Thu, 23 Aug 2012 14:15:23 GMT</pubDate></item><item><title><![CDATA[Reply to Meshloader macht Probleme on Thu, 23 Aug 2012 14:19:48 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Nenn mal einen einzigen Vorteil von malloc/placement new gegenüber &quot;normalem&quot; new</p>
</blockquote>
<p>Man kann reallozieren. <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>
</blockquote>
<p>Nicht, wenn du einen Konstruktor brauchtest, denn dann geht eine eventuelle Verschiebung schief.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2244784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2244784</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 23 Aug 2012 14:19:48 GMT</pubDate></item></channel></rss>