<?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[maximale dynmische arraygröße?]]></title><description><![CDATA[<p>Hallo, Leute!<br />
Ich habe folgendes Problem:<br />
Ich will Wave-Daten in einem dynamischen Array speichern. Läuft auch, nur wenn die Datei zu groß wird gibt es beim LESEN aus meinem Array (nicht der Datei, das Array anlegen hat auch funktioniert...) eine Access Violation. Die Arraygrenzen sind definitiv nicht erreicht. Bei verschiedenen Dateien tritt der Fehler immer so um das 4,5 mio. (aber nie genau) Sample auf. Kann man nicht so darauf zugreifen: myArray[4500000]? Das Array müsste mindestens 6mio samples gespeichert haben. (als float)<br />
Sind da irgenwelche Grenzen erreicht? Wie kann ich sie umgehen?<br />
Vielen Dank und Viele Grüße<br />
Sören</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189825/maximale-dynmische-arraygröße</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 11:48:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189825.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 17 Aug 2007 10:09:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 10:10:34 GMT]]></title><description><![CDATA[<p>Hallo, Leute!<br />
Ich habe folgendes Problem:<br />
Ich will Wave-Daten in einem dynamischen Array speichern. Läuft auch, nur wenn die Datei zu groß wird gibt es beim LESEN aus meinem Array (nicht der Datei, das Array anlegen hat auch funktioniert...) eine Access Violation. Die Arraygrenzen sind definitiv nicht erreicht. Bei verschiedenen Dateien tritt der Fehler immer so um das 4,5 mio. (aber nie genau) Sample auf. Kann man nicht so darauf zugreifen: myArray[4500000]? Das Array müsste mindestens 6mio samples gespeichert haben. (als float)<br />
Sind da irgenwelche Grenzen erreicht? Wie kann ich sie umgehen?<br />
Vielen Dank und Viele Grüße<br />
Sören</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346203</guid><dc:creator><![CDATA[soerenP]]></dc:creator><pubDate>Fri, 17 Aug 2007 10:10:34 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 10:22:11 GMT]]></title><description><![CDATA[<p>Was für ein Array verwendest du denn? Einen direkt per new[] angeforderten Speicherblock oder std::vector&lt;&gt;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346210</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 17 Aug 2007 10:22:11 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 10:28:08 GMT]]></title><description><![CDATA[<p>es ist ein mit new erstelltes Array. Um genau zu sein sogar zweidimensional, wegen mehreren Kanälen (in diesem Fall aber einkanalig...), aber das spielt wohl (hoffentlich) keine Rolle.<br />
Grüße<br />
Sören</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346213</guid><dc:creator><![CDATA[soerenP]]></dc:creator><pubDate>Fri, 17 Aug 2007 10:28:08 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 10:32:09 GMT]]></title><description><![CDATA[<p>Zeig doch mal den Code, wie das Array erzeugt wurde (btw, gab es schon beim Füllen des Arrays Speicher-Probleme?).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346215</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 17 Aug 2007 10:32:09 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 10:32:49 GMT]]></title><description><![CDATA[<p>wieso verwendest du keinen std::vector?<br />
da kannst du mit max_size() die max Größe ermitteln, die der Vektor auf dem aktuellen System haben darf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346217</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Fri, 17 Aug 2007 10:32:49 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 10:39:13 GMT]]></title><description><![CDATA[<p>beim Füllen des Speichers gabs komischerweise keine Probleme.<br />
Quellcode folgt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346222</guid><dc:creator><![CDATA[soerenP]]></dc:creator><pubDate>Fri, 17 Aug 2007 10:39:13 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 10:45:43 GMT]]></title><description><![CDATA[<p>So:</p>
<pre><code>void CWaveFile::convertBufferToSamples()
{

	m_theSamples=new float*[channels];
	m_nSamples=data_size/(channels*bits_per_sample/8);
	int bytespersample=bits_per_sample/8;
	for(int c=0;c&lt;channels;c++)
	{
		m_theSamples[c]=new float[m_nSamples];	
	}
	int pointer=0;//durchläuft den soundBuffer (Rohdaten aus File)
	for(int i=0;i&lt;m_nSamples;i++)
	{
		for( c=0;c&lt;channels;c++)
			{
			    int theValue=0;
				for(int b=0;b&lt;bytespersample;b++)
				{
                                  theValue+=
                                  m_soundBuffer[pointer++]*(int)pow(256,b);
                                  //Interpretation der Rohdaten
				}
				if(theValue&gt;pow(2,bits_per_sample-1))
                                theValue-=(int)pow(2,bits_per_sample);
				m_theSamples[c][i]=
                                (float)theValue/(float)pow(2,bits_per_sample-1);
			}
	}
	loaded=true;

}
</code></pre>
<p>Eigentlich sollte alles funzen, bei kleineren Dateien ist ja auch alles Ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346231</guid><dc:creator><![CDATA[soerenP]]></dc:creator><pubDate>Fri, 17 Aug 2007 10:45:43 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 10:50:24 GMT]]></title><description><![CDATA[<p>Hat ein Vector sonst keine Nachteile?<br />
Hab das noch nicht in betracht gezogen...<br />
Da ich aber den Speicher allokieren durfte, scheint meine Datei wohl nicht definitiv zu groß zu sein, oder?<br />
Grüße<br />
Sören</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346238</guid><dc:creator><![CDATA[soerenP]]></dc:creator><pubDate>Fri, 17 Aug 2007 10:50:24 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 10:56:30 GMT]]></title><description><![CDATA[<p>und auslesen tu ich so:</p>
<pre><code>for(int i=1;i&lt;width;i++)
		{
			LineTo(hdc,i ,int(height/2-m_theSamples[c][int(float(i*(m_nSamples-1))/width)]*height/2) );
		}
</code></pre>
<p>Vielleicht etwas umständlich geschrieben (aus verzweiflung) aber hier dürfte ich doch eigentlich keinen Fehler drin haben, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346241</guid><dc:creator><![CDATA[soerenP]]></dc:creator><pubDate>Fri, 17 Aug 2007 10:56:30 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 11:05:05 GMT]]></title><description><![CDATA[<p>Das ständige Gecaste sieht ja grauenhaft aus - und nebenbei solltest du mal kontrollieren, welchen Index du tatsächlich verwendest. (der maximal gültige Index ist 'nSamples-1')</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346247</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 17 Aug 2007 11:05:05 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 11:15:03 GMT]]></title><description><![CDATA[<p>ist schon geprüft:<br />
Der Fehler tritt bei i=637 auf, width ist 952. m_nSamples liegt bei 6,6mio, das macht 4,5 mio für den Index.<br />
Das gleiche (ca4,5mio) gilt auch für andere Dateien mit anderen Werten.<br />
Ich kann im übrigen nicht auf über m_nSamples-1 kommen, da i&lt;width und i/width somit &lt;1, also (m_nSamples-1)*i/width kann nicht über m_nSamples-1 kommen.<br />
Das gecaste hab ich aus verzweiflung gemacht, weil ich den Fehler nicht gefunden hab...<br />
Grüße<br />
Sören</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346254</guid><dc:creator><![CDATA[soerenP]]></dc:creator><pubDate>Fri, 17 Aug 2007 11:15:03 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 11:26:28 GMT]]></title><description><![CDATA[<p>Haha, gar nicht:<br />
i*(m_nSamples-1) geht an die 32 bit-Grenze, das mochte er wohl nicht so gerne und hat ne negative Zahl draus gemacht.<br />
Danke!<br />
Sören</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346265</guid><dc:creator><![CDATA[soerenP]]></dc:creator><pubDate>Fri, 17 Aug 2007 11:26:28 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 11:33:14 GMT]]></title><description><![CDATA[<p>Tja, mit vector oder size_t wäre das nicht passiert..... :p<br />
Nein stimmt natürlich nicht ... <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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346269</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 17 Aug 2007 11:33:14 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 11:39:16 GMT]]></title><description><![CDATA[<p>nunja, wie man es nimmt... size_t ist normalerweise ja ein unsigned da sind noch ein paar stellen mehr möglich <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="🙂"
    /> Und zudem kann er beim std::vector anstatt den index-operator zum validieren <a href="http://testarray.at" rel="nofollow">testarray.at</a>(i) verwenden und erhält dann eine index-exception.</p>
<p>aber die frage ist und bleibt, ob es wirklich sinn macht dermaßen lange arrays zu verwenden...</p>
<p>Gruß,<br />
SirAnn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346280</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Fri, 17 Aug 2007 11:39:16 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 11:45:50 GMT]]></title><description><![CDATA[<p>soerenP schrieb:</p>
<blockquote>
<p>Haha, gar nicht:<br />
i*(m_nSamples-1) geht an die 32 bit-Grenze, das mochte er wohl nicht so gerne und hat ne negative Zahl draus gemacht.</p>
</blockquote>
<p>Bei solche Problemen hilft es oft nur noch, auf größere Datentypen auszuweichen (wenn du statt des Produkts nur das i in float umgewandelt hättest, wäre das vielleicht etwas geworden) oder die Reihenfolge der Berechnungen umzustellen ('i*((nSamples-1)/width)' produziert z.B. keinen Überlauf).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346290</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 17 Aug 2007 11:45:50 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 12:34:13 GMT]]></title><description><![CDATA[<p>muffmolch schrieb:</p>
<blockquote>
<p>aber die frage ist und bleibt, ob es wirklich sinn macht dermaßen lange arrays zu verwenden...</p>
</blockquote>
<p>Was genau meinst du?<br />
Ob es Sinn macht, die Daten auf einmal im Arbeitsspeichr zu haben, oder ein Array mit new[] zu nehmen anstatt nen Vector?</p>
<p>Naja, wenn man keinen Casting-Quatsch betreibt gibts doch erstmal keine Probleme. Und auch keinen Daniel Küblböck, verzeiht mir das Wortspiel;-)<br />
Ich danke euch allen nochmal<br />
Sören</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346322</guid><dc:creator><![CDATA[soerenP]]></dc:creator><pubDate>Fri, 17 Aug 2007 12:34:13 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 12:56:59 GMT]]></title><description><![CDATA[<p>soerenP schrieb:</p>
<blockquote>
<p>Was genau meinst du?<br />
Ob es Sinn macht, die Daten auf einmal im Arbeitsspeichr zu haben, oder ein Array mit new[] zu nehmen anstatt nen Vector?</p>
</blockquote>
<p>wenn soweit alles läuft, dann ist ja alles in grünen bereich.<br />
und wenn du die daten benötigst, dann sollten sie sich wenn möglich auch alle im arbeitsspeicher befinden. dennoch macht es hin und wieder sinn, daten zu unterteilen. was ist, wenn deine daten vom theoretischen verfügbaren speicher in den RAM passen, aber dieser dermaßen defragmentiert ist, dass dies nicht &quot;an einem Stück&quot; (was array/std::vectoren nunmal sind) geschehen kann???</p>
<p>ist eben eine design frage.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346349</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Fri, 17 Aug 2007 12:56:59 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Fri, 17 Aug 2007 14:58:50 GMT]]></title><description><![CDATA[<p>wenn du nen array mit 2^32 floats anlegst, belegt der 1 gig ram. das wird auf vielen rechnern wohl gut gehen, aber spätestens, wenn du mit den daten ein wenig rumjonglierst und sich das volumen verdoppelt, fliegt dir ne windows anwendung um die ohren, egal wieviel ram drinsteckt. bei großen datenmengen sollte man paketeweise arbeiten. ist meist überhaupt kein problem, wenn man sich eine maximale paketgröße von ein paar tausend (großzügig denken) objekten definiert. damit wird man meistens den kontext auch noch hinbekommen, die anwendung bleibt schnell und kommt mit drastisch weniger speicher aus. eine million floats sind wesentlich handlicher als 4.5 milliarden <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/1346450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346450</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Fri, 17 Aug 2007 14:58:50 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Sat, 18 Aug 2007 12:23:46 GMT]]></title><description><![CDATA[<p>Ich möchte mal klarstellen, dass ich nicht mit 2^32 floats gearbeitet habe, sondern mit 4,5 Millionen, da liegt ein faktor 1000 zwischen,wenn ich mich recht entsinne.<br />
Also, angenommen, ich komme nie über ca. 150MB (eigentlich sogar meistens wesentlich weniger), dann beweg ich mich doch auf der sicheren Seite, oder?<br />
Danke nochmal<br />
Sören</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346860</guid><dc:creator><![CDATA[soerenP]]></dc:creator><pubDate>Sat, 18 Aug 2007 12:23:46 GMT</pubDate></item><item><title><![CDATA[Reply to maximale dynmische arraygröße? on Sun, 19 Aug 2007 10:58:54 GMT]]></title><description><![CDATA[<p>soerenP schrieb:</p>
<blockquote>
<p>Ich möchte mal klarstellen, dass ich nicht mit 2^32 floats gearbeitet habe, sondern mit 4,5 Millionen, da liegt ein faktor 1000 zwischen,wenn ich mich recht entsinne.<br />
Also, angenommen, ich komme nie über ca. 150MB (eigentlich sogar meistens wesentlich weniger), dann beweg ich mich doch auf der sicheren Seite, oder?<br />
Danke nochmal<br />
Sören</p>
</blockquote>
<p>150MB stellen für heutige rechner i.d.R. natürlich kein Problem dar.<br />
Auf nem PPC wird es da natürlich eng <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/1347279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1347279</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Sun, 19 Aug 2007 10:58:54 GMT</pubDate></item></channel></rss>