Zuweisung eines großen (5000+) Arrays

7

Ich arbeite an einer Anwendung, wenn es drei mögliche Größen für die eingegebenen Daten gibt:

  • klein: 1000 Elemente
  • medium = 5000 Elemente
  • large = 500.000 Elemente

Das Problem ist, dass ich das große Array nicht zuordnen kann. Es scheint, dass eine Größe größer als 5000 nicht akzeptiert wird.

Ich bekomme einen Laufzeitfehler, wenn ich folgendes mache:

%Vor%

Größen von 1000 und 5000 scheinen gut zu funktionieren, aber wie kann ich ein Array der Größe 500k auf diese Weise machen?

    
Nathalie B 21.04.2011, 15:35
quelle

3 Antworten

8

Sie können ein so großes Array auf dem Heap reservieren:

%Vor%

Vergessen Sie nicht, zu überprüfen, ob die Zuweisung erfolgreich war (falls nicht - malloc gibt NULL zurück).

Und da pmg erwähnt wurde - da dieses Array nicht im Stack liegt, müssen Sie free it eingeben, wenn Sie damit fertig sind.

    
MByD 21.04.2011 15:40
quelle
8

Ihr Stack kann nicht so viele Daten speichern. Sie müssen wie folgt große Arrays auf dem Heap zuweisen:

%Vor%

Wie pmg darauf hingewiesen, denken Sie daran, Ihr Gedächtnis zu befreien, sobald Sie fertig sind.

%Vor%     
Pepe 21.04.2011 15:38
quelle
3

Es ist zu groß für den Stapel. Stattdessen müssen Sie es auf dem Haufen mit malloc zuweisen.

    
David Heffernan 21.04.2011 15:39
quelle

Tags und Links