Maximale Größe eines Felders erhöhen?



  • Hi Leute,

    ich habe eine Frage.
    Ich möchte ein Feld anlegen, welches extrem viele Elemente enthält.

    Mein Compiler (GCC) hat aber ein Problem, wenn ich Felder mit mehr als 520.000 Elementen anlegen möchte.
    Was genau kann man da machen?

    Ich benutzt als Editor Bloodshet Dev-C++
    Betriebssystem Windows XP.

    Hier ein Quellcode-Stück:
    int feld[500000]; /* Das funktioniert ohne Probleme /
    int feld[1000000]; /
    Hier gibt es eine nicht so nette Fehlermeldung */

    Eigentlich kann es ja nicht an C liegen. Denke daher mehr an den Compiler.

    Hat wer einen Tipp? Wäre SUPER!

    Ich danke euch im Voraus,
    Reo



  • versuch malloc:

    int *feld = malloc (1000000 * sizeof(int));
    


  • Super, das geht. Ich habe mir sowas in der Art schon gedacht.

    Gibt es nen Grund, wieso es nicht auf die "einfache" Weise geht?
    Wenn ich einfach nur int feld[1000000] angebe, dann ist das irgendwie übersichtlicher. Aber naja, ich habe erstmal eine Lösung.

    Vielen Dank.

    Gruß,
    Reo



  • Reo schrieb:

    Gibt es nen Grund, wieso es nicht auf die "einfache" Weise geht?

    innerhalb von {} landen die variablen normalerweise auf'm stack und dessen speicher ist sehr begrenzt (da sind andere lokale variablen drin, rücksprungadressen usw.). warum's als static oder ausserhalb von funktionen nicht geht weiss ich auch nicht.



  • Hmm, naja, okay. Ist auch nicht ganz so wichtig. Hat ich halt einfach nur gewundert.

    Jetzt habe ich ja eine Lösung und möchte mich nochmals dafür bedanken. Vorallem, weil sie so schnell kam. 🙂

    Gruß,
    Reo



  • free() nicht vergessen


Anmelden zum Antworten