Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

26.11.2014, 20:01

C++ Char Array Elemente

Hallo,
wie kann ich in C++ ein Array mit ca. 3 Mio Elementen erstellen ?
Bzw. wie viel ist das Maximum, an Elementen, die man ich einen char Array anlegen kann ?
Da gibt es doch auch ein Befehl ?
Aber ich brauche unbedingt ein char Array mit min. 3 Mio Elementen.

Gruß Niklas

2

26.11.2014, 20:04

Du brauchst 3MB an chars?
Wozu zur Hölle?

MfG
Check

3

26.11.2014, 20:12

Naja

C-/C++-Quelltext

1
2
3
4
char viel[3000000]; //gibt wahrscheinlich ein Compiler-Fehler weil zu groß
//oder
char *viel = new[3000000];
delete[] viel;


Die größe hängt bei Variablen auf dem Stack von der größe des Stacks ab, der meines Wissens bei um die 8MB liegt. Auf dem Heap kannst du mehr Speicher reservieren.
Aber wozu brauchst du das :huh:

Tankard

Treue Seele

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

4

26.11.2014, 20:14

Müsste die maximale Arraygröße nicht sizeof(size_t) sein?

Willst du ein ganzes Buch auf einmal in den Speicher laden?

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

5

26.11.2014, 20:49


Aber ich brauche unbedingt ein char Array mit min. 3 Mio Elementen.

Gruß Niklas


Nein, das brauchst du zu 99% nicht. Ein wenig mehr Kontext wäre nett.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

6

26.11.2014, 20:53

Zitat von »"Tankard"«

Müsste die maximale Arraygröße nicht sizeof(size_t) sein?

Nein. Das absolut oberste Maximum ist der größte Wert den std::size_t annehmen kann, aber nicht sizeof(std::size_t). Das wird offensichtlich eher selten erreicht....
Die Größe auf dem Stack ist limitiert durch den Compiler und möglicherweise eben auch durch die Hardware, die Größe des Heaps hängt von der Hardware und im wesentlichen vom Betriebssystem ab. z.B. ob 32 oder 64 Bit.

MfG
Check

7

26.11.2014, 21:16

Ich brauche ca. 3 Mio Elemente für ein Spiel, welches eine generierte Map (aus Blöcken bestehend) aus einer .txt Datei in einem char Array speichert, nun habe ich aber 300 Tsd. Blöcke und ca. 3 Mio Zeichen in der Datei :D

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

8

26.11.2014, 21:25

Wieso willst du denn alles zwischenspeichern? Leg jeden Block in eine Zeile und geh zeilenweise durch, dürfte nicht wirklich langsam sein...
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

9

26.11.2014, 21:31

Also ich habe die Daten einmal gespeichert und jetzt muss ich sie bei jedem Start nur nocheinmal auslesen. Sie stehen in der Datei bspw. so: 0,82,48|70,86,56|72,64,74|

10

26.11.2014, 21:35

Kann ich nicht mit size_t arbeiten ? Der liefert mir doch mehr als 3 Mio Elemente zurück ?
Aber wie baue ich dann size_t in meinen Code ein ?

Werbeanzeige