Problem mit einem Verbund



  • Hallo Leute,

    hab bisher immer nur mit C programmiert, bin nun aber gezwungen auch C++ zu verwenden, da objektorientiertes Programmieren bei großen Projekten besser zu überschauen und verwalten ist. Nun hab ich in einem Verbund (Vielleicht auch bekannt als Klasse vom Typ struct) unter anderem ein dreisimensionales Array des Typs float.
    Aber wenn ich die 2. Diemension auf über 1720 erhöhe stürzt das Programm ab obwohl ich problemlos globale Varibalen deklarieren kann, die weit aus größer sind.
    Z.B.: float koordinaten[100][99999][3] würde nicht in einem Verbund benutzbar sein. Meine Fragen sind nun: Wieso? Wie kann ich das beheben? Danke schon mal.

    mfg Oermel

    PS: Ich bitte um verzeiung, wenn diese Frage dumm klingt 🤡



  • Versuch mal mit 'new' vorsorglich genügend Speicher vorzuallokiieren, und fasse die Zählschleife (oder was auch immer), in der du das Array füllst in einen try - catch Block. Vermutlich ist es eine bad_alloc oder out_of_range exception. Evtl. schreibst du versehentlich übers Arrayende hinaus ...

    MfG mikey.



  • Hallo,

    wenn du richtig große Arrays auf dem Stack anlegst (also einfach int x[10000000000]; ), dann wird das problematisch, weil dein Stack eben nur eine bestimmte Größe hat.
    Abhilfe schafft, wie schon gesagt, die Allokation mit Hilfe des new Operators: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39489.html

    MfG

    GPC



  • wenn du richtig große Arrays auf dem Stack anlegst (also einfach int x[10000000000]; ), dann wird das problematisch, weil dein Stack eben nur eine bestimmte Größe hat.

    Hm stimmt, das habe ich garnicht berücksichtigt. ...



  • Danke Leute, ihr seit spitze. 😋


Anmelden zum Antworten