Wie groß darf der Stack einer Funktion sein?

Dieses Thema im Forum "C/C++" wurde erstellt von Asturio, 29.03.2006.

  1. #1 Asturio, 29.03.2006
    Asturio

    Asturio Asturio Kee

    Dabei seit:
    16.02.2006
    Beiträge:
    34
    Zustimmungen:
    0
    Hallo Zusammen,

    hier habe ich wieder eine sehr spezielle Frage, die kommt eigentlich aus Solaris, aber lässt sich auch gut auf Linux umsetzen. Also:

    • Ich habe eine C Funktion
    • In der Funktion habe ich einen struct als lokaler Varible
    • Diese Variable ist allein schon ca. 2 Mb Groß (die enthält lauter Arrays und so)

    Mit einem so grossen lokalen Speicherverbrauch frage ich mich:

    Wie groß dürfen eigentlich alle Lokalen Variablen in einer Funktion zusammen sein? Soll ich mir Sorgen machen, wenn eine Funktion eine so grosse Variable braucht?

    Und auch, ob es sehr riskant ist ein paar Mal von diese Funktionen gleichzeitig aufzurufen (ich meine hier, dass diese Funktion andere Funktionen aufruft, die auch so eine Variable haben). Ein paar Mal heißt hier vielleicht 10.

    Ich weiß, man kann das allgemein mit mallocs und frees umgehen, aber ich würde trotzdem gerne das als Lokale Variablen belassen.

    Hatte jemand eine Antwort, oder zu mindest ein Vorschlag, wie man sowas testen kann?

    Grüße
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Also Testen ist ja ganz einfach: Einfach ausführen.
    Wenn der Stack nicht langt dann merkst du das schon.

    Aber bei einer _so_ großen Variable, welche dann auch noch so häuftig auftritt würde ich mir allein schon aus Performancegründen eine andere Lösung überlegen.
     
  4. cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    normalerweise sollte es kein problem geben, denn da sollte sich das speichermanagement des BS drum kümmern - vorausgesetzt du hast den speicher richtig allociert.

    wie hehejo schon gesagt hat: die performance wird halt drunter leiden wenn der arbeitsspeicher ausgelagert werden muss
     
  5. #4 Asturio, 29.03.2006
    Asturio

    Asturio Asturio Kee

    Dabei seit:
    16.02.2006
    Beiträge:
    34
    Zustimmungen:
    0
    Na ja, ich allociere eben nichts... es sind alle Lokale Variablen.
    Das einzige, was ich weiß, ist das der Stack (für Funktionen und Variablen in Funktionen) von oben nach unten wächst, und der Heap (für allocierte Speicher) von unten nach oben wächst. Beide Segmente treffen sich in der Mitte dann irgendwann. Ich habe noch nie einen "Stack Overflow" unter Linux produzieren können, und weiß auch nicht ob es so einen Fehler in C gibt.

    Ich werde vermutlich mir mehrere Funktionen testen müssen... Mal schauen was ich herausfinden kann.
     
  6. #5 hazelnoot, 29.03.2006
    hazelnoot

    hazelnoot www.mywm.dl.am

    Dabei seit:
    13.10.2005
    Beiträge:
    377
    Zustimmungen:
    0
    Ort:
    in Geiersberg
    tja ich wuerde sagen waenns nicht mehr geht wird dich linux schon drauf hinweisen *gg*
     
Thema:

Wie groß darf der Stack einer Funktion sein?

Die Seite wird geladen...

Wie groß darf der Stack einer Funktion sein? - Ähnliche Themen

  1. Großbritannien fördert Bürgerbeteiligung durch die Initiative »Digital by Default«

    Großbritannien fördert Bürgerbeteiligung durch die Initiative »Digital by Default«: Großbritanniens Government’s Digital Service (GDS) hat 2015 die Initiative »Digital by Default« gestrafft, um Richtlinien zur Erstellung...
  2. Linux Foundation vergrößert Leitungsteam

    Linux Foundation vergrößert Leitungsteam: Die Linux Foundation hat drei Personen Open-Source-Gemeinschaft in ihr Team berufen. Nicko van Someren wird Technikchef (CTO), Chris Aniszczyk...
  3. Broadcom 5715 verursacht grosse Probleme mit POE-Switch

    Broadcom 5715 verursacht grosse Probleme mit POE-Switch: Hallo zusammen Habe gerade festgestellt dass der in meiner Sun Ultra45 verbaute Broadcom BCM5715 ziemlich Probleme hat wenn man über einen POE...
  4. Nvidia Jetson TX1: 1 TFLOPS auf Kreditkartengröße

    Nvidia Jetson TX1: 1 TFLOPS auf Kreditkartengröße: Nvidia hat ein Rechenmodul auf ARM64-Basis vorgestellt, das dank des eingebauten Grafikprozessors eine Leistung von 1 TFLOPS erreichen soll. Dabei...
  5. Großbritannien setzt auf LibreOffice, Frankreich debattiert über Open Source.

    Großbritannien setzt auf LibreOffice, Frankreich debattiert über Open Source.: Großbritanniens Beschaffungsbehörde für Informations- und Kommunikationstechnik (ITC) hat einen Vertrag mit dem britischen Unternehmen Collabora...