<?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[problem bei speicherreservierung]]></title><description><![CDATA[<p>hi<br />
ich habe da mal ein problem:</p>
<p>gegeben ist...</p>
<p>...eine struct CMD2Vertex</p>
<pre><code class="language-cpp">struct CMD2Vertex
{
	float x,y,z;
};
</code></pre>
<p>.. und eine struct CMD2Frame</p>
<pre><code class="language-cpp">struct CMD2Frame
{
	CMD2Vector3 scale;
	CMD2Vector3 translate;
	char name[16];
	CMD2Vertex *vertex;
};
</code></pre>
<p>jetz habe ich mal speicher für frames bereitgestellt:</p>
<pre><code class="language-cpp">CMD2Frame *frame;
frame = new CMD2Frame[frames];
</code></pre>
<p>geht wunderbar.</p>
<p>aber in der struct &quot;CMD2Frame&quot; gibt es das OBject &quot;*vertex&quot;. dazu benutze ich eine schleife um jedes *vertex Object in jedem Frame speicher zu reservieren:</p>
<pre><code class="language-cpp">frame[i].vertex = new CMD2Vertex[vertices];
</code></pre>
<p>aber jetzt kommt ein runtime-error! warum denn das?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207580/problem-bei-speicherreservierung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 05:38:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207580.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Mar 2008 15:13:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem bei speicherreservierung on Sun, 09 Mar 2008 15:13:18 GMT]]></title><description><![CDATA[<p>hi<br />
ich habe da mal ein problem:</p>
<p>gegeben ist...</p>
<p>...eine struct CMD2Vertex</p>
<pre><code class="language-cpp">struct CMD2Vertex
{
	float x,y,z;
};
</code></pre>
<p>.. und eine struct CMD2Frame</p>
<pre><code class="language-cpp">struct CMD2Frame
{
	CMD2Vector3 scale;
	CMD2Vector3 translate;
	char name[16];
	CMD2Vertex *vertex;
};
</code></pre>
<p>jetz habe ich mal speicher für frames bereitgestellt:</p>
<pre><code class="language-cpp">CMD2Frame *frame;
frame = new CMD2Frame[frames];
</code></pre>
<p>geht wunderbar.</p>
<p>aber in der struct &quot;CMD2Frame&quot; gibt es das OBject &quot;*vertex&quot;. dazu benutze ich eine schleife um jedes *vertex Object in jedem Frame speicher zu reservieren:</p>
<pre><code class="language-cpp">frame[i].vertex = new CMD2Vertex[vertices];
</code></pre>
<p>aber jetzt kommt ein runtime-error! warum denn das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471001</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Sun, 09 Mar 2008 15:13:18 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Sun, 09 Mar 2008 15:24:41 GMT]]></title><description><![CDATA[<p>Fachmann schrieb:</p>
<blockquote>
<pre><code class="language-cpp">frame.vertex = new CMD2Vertex[vertices];
</code></pre>
<ul>
<li></li>
</ul>
<p>aber jetzt kommt ein runtime-error! warum denn das?*</p>
</blockquote>
<ul>
<li></li>
</ul>
<p>Wenn an dieser Stelle wirklich ein Fehler auftritt, dann liegt das entweder daran, dass [i]i* ein ungültiger Index ist. Beachte, dass i &lt; frames (echt kleiner) sein muss.</p>
<p>Andere, aber unwahrscheinliche möglichkeit ist, dass der Arbeitsspeicher voll ist und du keinen neuen reservieren kannst.</p>
<p>Aber an dem Code, den du gezeigt hast, lässt sich nichts mit Sicherheit sagen. Benutz mal einen Debugger und schau genauer nach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471007</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 09 Mar 2008 15:24:41 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Sun, 09 Mar 2008 18:44:47 GMT]]></title><description><![CDATA[<p>ok also der debugger sagt:</p>
<p>&quot;Unhandled exception at 0x004019b8 in main.exe: 0xC0000005: Access violation writing location 0x00000029.&quot;</p>
<p>aber warum gibst da &quot;access violation&quot;? sowas dummes... und warum ist da eigentlich ein unhandled exeption? ich hab in meinem code nicht mit trough,try,catch,usw gearbeitet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471111</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Sun, 09 Mar 2008 18:44:47 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Sun, 09 Mar 2008 18:58:13 GMT]]></title><description><![CDATA[<p>Fachmann schrieb:</p>
<blockquote>
<p>ok also der debugger sagt:</p>
<p>&quot;Unhandled exception at 0x004019b8 in main.exe: 0xC0000005: Access violation writing location 0x00000029.&quot;</p>
<p>aber warum gibst da &quot;access violation&quot;? sowas dummes... und warum ist da eigentlich ein unhandled exeption? ich hab in meinem code nicht mit trough,try,catch,usw gearbeitet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>ProgChild hat dir bereits geschrieben, wo das Problem ist.</p>
<p>Und das unhandled exeption kommt eben genau weil di <strong>throw</strong>, try, catch nicht benutzt hast..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471115</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 09 Mar 2008 18:58:13 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Sun, 09 Mar 2008 20:40:28 GMT]]></title><description><![CDATA[<p>wo ist das problem?<br />
i&lt;frames OK<br />
arbeitsspeicher voll? un warum konnte ich das billige programm nicht starten aber danoch noch so ein hardcore-programm wie photoshop<br />
naja ok ich bau ma through,catch,try exeptions ein. hab das noch nie grbruacht. runtime errors sind bei mir bisher nur mit divide by 0 , zugriff auf undefinierten zeiger oder sonstigen scheiss entstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471149</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Sun, 09 Mar 2008 20:40:28 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Sun, 09 Mar 2008 22:25:13 GMT]]></title><description><![CDATA[<p>Zeig die Schleife und wie gross frames ist.</p>
<p>Und es heisst: <strong>throw</strong>!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471200</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 09 Mar 2008 22:25:13 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Sun, 09 Mar 2008 22:57:22 GMT]]></title><description><![CDATA[<p>Fachmann schrieb:</p>
<blockquote>
<p>naja ok ich bau ma through,catch,try exeptions ein.</p>
</blockquote>
<p>Das kannst du gerne tun, aber das hilft dir bei diesem Problem nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471204</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 09 Mar 2008 22:57:22 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 14:12:36 GMT]]></title><description><![CDATA[<p>Wie sieht denn nun die Schleife aus? Und wie hoch ist vertices?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471468</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 10 Mar 2008 14:12:36 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 14:59:06 GMT]]></title><description><![CDATA[<p>schleifenkopf:</p>
<pre><code class="language-cpp">for (i = 0; i &lt; header.frames; i++)
</code></pre>
<p>frames = 10<br />
vertices = 24<br />
joar und beim ersten schleifendurchgang ist i=0.<br />
dh</p>
<p>1. durchgang:</p>
<pre><code class="language-cpp">frame[0].vertex = new CMD2Vertex[24];
</code></pre>
<p>aber das ist alles irrelevant denn:</p>
<pre><code class="language-cpp">frame[i].vertex = NULL;
</code></pre>
<p>...gibt auch ein fehler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471507</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Mon, 10 Mar 2008 14:59:06 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 15:24:22 GMT]]></title><description><![CDATA[<p>Mehr Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471530</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 10 Mar 2008 15:24:22 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 15:29:44 GMT]]></title><description><![CDATA[<blockquote>
<p>aber das ist alles irrelevant denn:</p>
<pre><code class="language-cpp">frame[i].vertex = NULL;
</code></pre>
<p>...gibt auch ein fehler</p>
</blockquote>
<p>Das heißt, dass es NICHT am allokieren liegt - sondern daran:</p>
<pre><code class="language-cpp">frame[i].vertex
</code></pre>
<p>Versuch mal das davor zu schreiben:</p>
<pre><code class="language-cpp">frame[0]; //bzw frame[i]
</code></pre>
<p>Ich wette, dass es schon da den Zugriffsfehler gibt...</p>
<p>Du machst also vor der Schleife schon irgendwas 'komisches' mit dem Objekt, weil all das, was du gepostet hast nicht der fehler ist ^^ also geh doch ma punkt für punkt den quellcode durch und guck immer, welche adresse und inhalte 'frame[0]' denn hat...</p>
<p>Debugger sind schon toll... :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471534</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 10 Mar 2008 15:29:44 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 15:59:21 GMT]]></title><description><![CDATA[<p>mmh hier nochmal alles auf einen schlag:</p>
<pre><code class="language-cpp">struct CMD2Vertex
{
	float x,y,z;
};
...
struct CMD2Frame
{
	CMD2Vector3 scale;
	CMD2Vector3 translate;
	char name[16];
	CMD2Vertex *vertex;
};
...
class CMD2Model
{
public:
     CMD2Frame *frame;
	int frames;
     ...
};

bool CMD2Model::Load(...)
{
    ...
    frames = header.frames;
    frame = new CMD2Frame[header.frames];
    printf(&quot;header.frames: %d&quot;,header.frames); //Ausgabe: header.frames: 10

    printf(&quot;\nheader.vertices: %d&quot;,header.vertices); //ausgabe: header.v = 24
    for (i = 0; i &lt; header.frames; i++)
    {
        printf(&quot;i=%d&quot;,i);
	frame[i].vertex = NULL;  //Error
        ...
    }
    ...
}
</code></pre>
<p>so, frame wurde nicht richtig allokiert oder so aber warum? bei den anderen speichern ging es doch auch und die sehen auch so aus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471552</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Mon, 10 Mar 2008 15:59:21 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 15:57:09 GMT]]></title><description><![CDATA[<p>Kann es sein, dass dein CMD2Model nicht richtig erstellt wurde bzw. schon wieder gelöscht wurde, wie unskilled schon geschrieben hat? Setz mal Breakpoints im Kon- und Destruktor, und überprüf, dass die Adresse des Objektes stimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471554</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 10 Mar 2008 15:57:09 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 16:13:48 GMT]]></title><description><![CDATA[<p>ich hab den this zeiger im konstructor und in der load-methode abgerufen:<br />
zwei unterschiedliche werte.<br />
hier wird die classe deklariert (keine argumente an konstruktor) und die load-methode gestartet:</p>
<p>CMD2Model model2;<br />
if(model2.Load(&quot;C:\\animation.md2&quot;,&quot;&quot;,GL_LINEAR)==false)<br />
puts(&quot;\n ERROR loading MD2&quot;);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471567</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Mon, 10 Mar 2008 16:13:48 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 16:28:46 GMT]]></title><description><![CDATA[<p>Dann finde doch mal mit deinem Debugger raus, wo sich genau die Addresse deines Objektes ändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471572</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 10 Mar 2008 16:28:46 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 17:02:42 GMT]]></title><description><![CDATA[<p>untersuche den Inhalt von frame unmittelbar vor der Zuweisung, die die beschriebene Ausnahme erzeugt.</p>
<blockquote>
<p>Unhandled exception at 0x004019b8 in main.exe: 0xC0000005: Access violation writing location 0x00000029.</p>
</blockquote>
<p>Diese Ausnahmen haben nichts mit C++-Exceptions zu tun. Diesem Fehler zufolge, wird ein Schreibzugriff auf die Adresse 41 versucht - falls tatsächlich die obige Zuweisung die betreffende Stelle ist, kann das eigentlich nur an einem fehlerhaften Wert in frame liegen (allerdings wohl nicht genau 0, denn vertex als Zeiger müsste eigentlich entsprechend (wohl auf 4 Byte) ausgerichtet sein). Letzlich kann dir nur der Debugger mehr verraten. Eine fehlgeschlagene Speicherreservierung kann dafür allerdings nicht verantwortlich sein, denn dann würde die Programmausführung diesen Punkt nie erreichen (weil eine echte C++-Exception vom Typ std::bad_alloc (oder davon abgleitet) geworfen würde).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471597</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 10 Mar 2008 17:02:42 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 18:04:29 GMT]]></title><description><![CDATA[<p>der debugger sagt:<br />
bei dem &quot;vertex&quot; objekt in der struct &quot;Frame&quot;<br />
Error CXX0017 : symbol &quot;&quot; not found<br />
gegooglet, rumprobiert, hab noch nicht gescheites dadrüber gesehen<br />
komisch find ich das:<br />
wenn ich in der klasse statt</p>
<pre><code class="language-cpp">CMD2Frame *frame;
</code></pre>
<p>schreibe, eine richtige array deklarier:</p>
<pre><code class="language-cpp">CMD2Frame frame[20];
</code></pre>
<p>dann sieht der debugger kein error mehr beim object &quot;vertex&quot; aber der altbekannte error &quot;unhandled exeption&quot; kommt immernoch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471639</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Mon, 10 Mar 2008 18:04:29 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 19:54:25 GMT]]></title><description><![CDATA[<p>boar ey...<br />
jz schreib doch einfach mal nen bissl quellcode hier her...</p>
<p>bye!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471713</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 10 Mar 2008 19:54:25 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 20:19:51 GMT]]></title><description><![CDATA[<p>was soll ich den schreiben?? das problem ist doch nur. ich reserviert speicher für eine structure. den bereich kann ich aber nicht ansprechen:<br />
hier das ganze: (*.h)</p>
<pre><code class="language-cpp">struct CMD2Vector3
{
	float p[3];
};

typedef struct CMD2Vertex
{
	float x;
	float y;
	float z;
};

struct CMD2TexCoord
{
  short s;
  short t;
};

struct CMD2Skin
{
  char name[64];
};

struct CMD2Triangle
{
  unsigned short vertex[3];
  unsigned short st[3];    
};

struct CMD2Frame
{
	CMD2Vector3 scale;
	CMD2Vector3 translate;
	char name[16];
	CMD2Vertex *vertex;
};

struct CMd2Header
{
  int ident;
  int version;
  int skinwidth;
  int skinheight;
  int framesize; 
  int skins; 
  int vertices;
  int st;      
  int triangles;    
  int glcmds;  
  int frames;  
  int offset_skins;
  int offset_st;   
  int offset_tris; 
  int offset_frames;
  int offset_glcmds;
  int offset_end;   
};

class CMD2Model
{
public:
	CMD2Triangle *triangle;
	int triangles;

	int skins;
	CMD2Skin *skin;
	int texcoords;
	CMD2TexCoord *texcoord;

	CTga tex;
	char *tex_filename;

	CMD2Frame *frame;
	int frames;

	char *filename;

	////
	CMD2Model();

	bool Load(char *arg_md2_filename,char *arg_texture_filename, unsigned int arg_tex_flag);

	~CMD2Model();

};

#endif
</code></pre>
<p>und hier *.cpp datei...</p>
<pre><code class="language-cpp">bool CMD2Model::Load(char *arg_md2_filename, char *arg_texture_filename, unsigned int arg_tex_flag)
{
	int i=0;
	filename = (char*) malloc(strlen(arg_md2_filename)+1);
	tex_filename = (char*) malloc(strlen(arg_texture_filename)+1);

	strcpy(filename,arg_md2_filename);
	strcpy(tex_filename, arg_texture_filename);

	printf(&quot;\n%s&quot;,arg_md2_filename);

	FILE* f_md2;
	f_md2 = fopen(arg_md2_filename,&quot;rb&quot;);
	if(f_md2 == NULL)
		return false;

	CMd2Header header;

	fread(&amp;header,1,sizeof(header),f_md2);

	if ((header.ident != 844121161) || (header.version != 8))
		return false;

	triangles = header.triangles;
	triangle = new CMD2Triangle [triangles];
	skins =header.skins;
	skin = new CMD2Skin [skins];
	frames = header.frames;

     ///hier wird frame allokiert:///////////////////////////////

	frame = new CMD2Frame[header.frames]; 
//////////////////////////////////////////////////////////////  

	printf(&quot;header.frames: %d&quot;,header.frames);
	texcoords = header.st;
	texcoord = new CMD2TexCoord[texcoords];

	fseek (f_md2, header.offset_skins, SEEK_SET);
	fread (&amp;skin, sizeof (struct CMD2Skin),skins, f_md2);
	fseek (f_md2, header.offset_st, SEEK_SET);
	fread (&amp;texcoord, sizeof (CMD2TexCoord),texcoords, f_md2);
	fseek (f_md2, header.offset_tris, SEEK_SET);
	fread (&amp;triangle, sizeof (CMD2Triangle),triangles, f_md2);
	fseek (f_md2, header.offset_frames, SEEK_SET);

	printf(&quot;\nheader.vertices: %d&quot;,header.vertices);
	for (int i = 0; i &lt; 10; i++)
    {
		printf(&quot;i=%d&quot;,i);

/////hier gibts denn error:///////////////////////////////////

		printf(&quot;%s&quot;,frame[i].vertex);

//////////////////////////////////////////////////////////

		//frame[i].vertex = new CMD2Vertex[header.vertices]; 

		fread (&amp;frame[i].scale, sizeof (CMD2Vector3), 1, f_md2);puts(&quot;OKl&quot;);
		fread (&amp;frame[i].translate, sizeof (CMD2Vector3), 1, f_md2);puts(&quot;OKl&quot;);
		fread (&amp;frame[i].name, sizeof (char), 16, f_md2);puts(&quot;OKl&quot;);
		fread (&amp;frame[i].vertex, sizeof (CMD2Vertex),header.vertices, f_md2);puts(&quot;OKl&quot;);
	}

	fclose (f_md2);
	return true;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1471741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471741</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Mon, 10 Mar 2008 20:19:51 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 21:00:15 GMT]]></title><description><![CDATA[<p>also - wenn du das ganze so lassen willst, dann solltest du im C forum posten - das ist ALLES c - kein stück C++... ok - die news sind C++ ^^</p>
<pre><code class="language-cpp">fread (&amp;skin, sizeof (struct CMD2Skin),skins, f_md2); //falsch?!
=&gt;
fread (&amp;skin, sizeof (CMD2Skin),skins, f_md2); 

UND:
guck dir ma streams an...

std::istream datei; //vll auch ostream ^^ weiß ich nicht, weil ich verwends niemals ^^
datei.open (&quot;.\\dateiname.endung&quot;); // gleiches verzeichnis
datei &gt;&gt; skins; // skins aus datei auslesen...
</code></pre>
<p>so rum is natürlich nicht all zu intelligent...</p>
<pre><code class="language-cpp">printf(&quot;%s&quot;,frame[i].vertex); 
frame[i].vertex = new CMD2Vertex[header.vertices]; 
=&gt;
frame[i].vertex = new CMD2Vertex[header.vertices]; 
std::cout &lt;&lt; frame[i].vertex[0] &lt;&lt; std::endl; //#include &lt;iostream&gt;
</code></pre>
<p>btw: wenn du new verwendest, solltest du auch delete verwenden... sonst is bissl doof, wenn du nur speicher anforderst und nie freigibst...</p>
<pre><code class="language-cpp">filename = (char*) malloc(strlen(arg_md2_filename)+1); 
tex_filename = (char*) malloc(strlen(arg_texture_filename)+1); 
=&gt;
char *r = new char [laenge+1];
oder noch besser:
std::string var (&quot;beliebiger inhalt................................&quot;);
</code></pre>
<p>bye...</p>
<p>PS: ich seh kein stück durch da... man kann auch fkt und klassen schreiben in c++. das macht es zumindest nicht verworrener - nur leserlicher, logischer, .... - besser eben ; )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471765</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 10 Mar 2008 21:00:15 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 21:20:49 GMT]]></title><description><![CDATA[<p>mh das ist doch eine class &quot;CMD2Model&quot;</p>
<p>das prinzip ist, die Klasse CMD2Model soll eine md2-datei (3d-model-datei, mit animation) laden.</p>
<p>dazu werden die ganzen strukturen erstellt (zb CMD2Texture)</p>
<p>in der CMD2Model-Klasse werden dann zeiger auf die strukturen deklariert.<br />
nun wird der header der datei gelesen.<br />
daraus wird entnommen wieviel Vertices, Frames, Skins, usw in der Datei sind.<br />
Dementsprechend wird der Platz reserviert:</p>
<pre><code class="language-cpp">...
triangle = new CMD2Triangle [triangles];
    skins =header.skins;
    skin = new CMD2Skin [skins];
...
</code></pre>
<p>nun werden die daten in die reservierten speicher geladen:</p>
<pre><code class="language-cpp">...
fseek (f_md2, header.offset_st, SEEK_SET);
    fread (&amp;texcoord, sizeof (CMD2TexCoord),texcoords, f_md2);
...
</code></pre>
<p>für jedes frame wird nun ein schleifendurchgang vorgenommen in dem platz für die vertices in einem frame einen speicherplatz reserviert bekommen und die daten in diesen platz geschrieben werden.<br />
bei der allokaliesierung (oder so) von &quot;frame&quot; gibt es vermutlich einen fehler, sodass nicht zugegriffen wernden kann. aber warum?</p>
<p>(this-zeiger ist immmer gleich)</p>
<p>ich hab mir gedacht, wenn es da ein fehler bei der allokalisierung von frames gibt, dann schaff ich das einfach ab. sprich: ich leg eine array für die ganzen frames fest:</p>
<p>CMD2Frame frame[20];</p>
<p>und schreib dann in der schleife darein die frame-daten</p>
<p>in der Hoffnung dass der Fehler nichtmehr vorkommt.<br />
aber er kommt trotzdem<br />
warum kommt dieser scheiss fehler? der pisst mich an. son scheiss hat ich noch nie</p>
<p>ps: class = c++ , new = c++,<br />
der rest ist c weil ich das jetz mal übersichtlicher fand. für ein amateur reichts, solang es keine fehler verursacht, zumindest keine fatalen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471772</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Mon, 10 Mar 2008 21:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 10 Mar 2008 21:47:17 GMT]]></title><description><![CDATA[<p>wenn es übersichtlich wäre, dann würdest du den fehler finden...</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;iostream&gt;

bool CMD2Model::Load(const std::string &amp;arg_md2_filename, const std::string &amp;arg_texture_filename, size_t arg_tex_flag) 
{ 
    filename, tex_filename; //als std::string deklarieren (dafür brauchste nen #include &lt;string&gt;)

	//strcpy ist eh deprecated... guckst du msdn... das aktuelle sollte strcpy_s sein
    filename = arg_md2_filename; //mit strings geht das so schön einfach, wahrscheinlich fast genau so schnell, sicherer, komfortabler und vor allem nicht so fehleranfällig
    tex_filename = arg_texture_filename; 

	std::cout &lt;&lt; arg_md2_filename &lt;&lt; std::endl; //ausgabe....

	std::ifstream f_md2; //#include &lt;ifstream&gt;
	if (!f_md2.open (arg_md2_filename))
        return false; 

    CMd2Header header; 

	f_md2 &gt;&gt; header;

    if ((header.ident != 844121161) || (header.version != 8))  //was auch immer ^^
        return false; 

    triangles = header.triangles; //was auch immer - ich nehm mal an size_t
	//vll solltest du das auch triangle_count nennen - ist übersichtlicher und deutlicher...
    triangle = new CMD2Triangle [triangles]; //typ wirst du scho wissen und wird scho stimmen...
    skins = header.skins; //den sinn hiervon seh ich auch gerad nicht...
    skin = new CMD2Skin [header.skins];
    frames = header.frames; 
    frame = new CMD2Frame [header.frames]; 

	std::cout &lt;&lt; &quot;header.frames: &quot; &lt;&lt; header.frames &lt;&lt; std::endl; 
    texcoords = header.st; 
    texcoord = new CMD2TexCoord [texcoords]; 

	f_md2.seekg (header.offset_skins, std::ios::beg);
	f_md2 &gt;&gt; skin;
	//die beiden zeilen könnte man auch in ne fkt zusammen packen...
/*
	so in etwa:
	template &lt;T&gt; void readout (ifstream &amp;dateistream, T &amp;ausgabe, size_t offsetwert)
	{
		dateistream.seekg (offsetwert, std::ios::beg);
		dateistream &gt;&gt; ausgabe;
	}
*/
//usw...

	std::cout &lt;&lt; &quot;header.vertices: &quot; &lt;&lt; header.vertices &lt;&lt; std::endl; 
    for (size_t i (0); i &lt; 10; ++i) 
    { 
		std::cout &lt;&lt; &quot;i= &quot; &lt;&lt; i &lt;&lt; std::endl;
		frame[i].vertex = new CMD2Vertex [header.vertices]; 
		std::cout &lt;&lt; frame[i].vertex &lt;&lt; std::endl;

		ifstream &gt;&gt; frame[i].scale; std::cout &gt;&gt; &quot;\tOK1&quot; &gt;&gt; std::endl;
		ifstream &gt;&gt; frame[i].translate; std::cout &gt;&gt; &quot;\tOK2&quot; &gt;&gt; std::endl;
		ifstream &gt;&gt; frame[i].name; std::cout &gt;&gt; &quot;\tOK3&quot; &gt;&gt; std::endl;
		ifstream &gt;&gt; frame[i].vertex; std::cout &gt;&gt; &quot;\tOK4&quot; &gt;&gt; std::endl;
    } 

    return true; 
}
</code></pre>
<p>guck dir das mal an - sind bestimmt noch 1 oder 2 fehler drin - aber versuchs ma so weit zu ändern und sag, was dann passiert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471788</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 10 Mar 2008 21:47:17 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei speicherreservierung on Mon, 07 Apr 2008 14:44:06 GMT]]></title><description><![CDATA[<p>ok hat ein bisschen gedauert weil noch weitere, andere probleme entstanden sind aber hier nun der code:</p>
<pre><code class="language-cpp">typedef struct C3DVertex
{
	float x,y,z,u,v;
}C3DVertex;
</code></pre>
<p>un hier das sorgenkind:</p>
<pre><code class="language-cpp">C3DVertex *vertex =NULL;
	vertex = new C3DVertex[head.num_vertices]; 

	int vi = 0;
	for(i=0;i&lt;pModel-&gt;nNumMeshes;i++)
	{
		for(int j=0; j&lt;pModel-&gt;pMeshes[i].nNumVertices;i++)
		{
			MBFLAG  /// MESSAGEWINDOW

			vertex[vi+j].x = pModel-&gt;pMeshes[i].pVertices[j].Vertex[0];
			vertex[vi+j].y = pModel-&gt;pMeshes[i].pVertices[j].Vertex[1];
			vertex[vi+j].z = pModel-&gt;pMeshes[i].pVertices[j].Vertex[2];
			vertex[vi+j].u = pModel-&gt;pMeshes[i].pVertices[j].u;
			vertex[vi+j].v = pModel-&gt;pMeshes[i].pVertices[j].v;

			MBFLAGS   ////  MESSAGEWINDOW mit S
		}
		vi = j+1;
	}
</code></pre>
<p>nun gibt es einen runtime-error nachdem MBFLAG 3x aufgerufen wurde. sprich: der error entsteht im 2. durchgang der schleife.<br />
das ist allerdings nur so wenn head.num_vertices==2.<br />
wenn head.num_vertices größer ist dann durchläuft es mehrer durchgänge bis zum error.<br />
dass der RAM voll ist glaub ich aber wohl kaum. das kann nicht sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1487989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1487989</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Mon, 07 Apr 2008 14:44:06 GMT</pubDate></item></channel></rss>