Dynamisches Array mit variabler Feldlänge



  • Hallo darf ich sowas machen?

    int main()
    {
    
      int len = 100;
      int felder[len];
    
    }
    

    Ich weiß, dass man sowas mit malloc oder new realisieren kann, die Frage ist aber ob das irgendwo so definiert ist und vorallem wo?
    Übrigens: Im Dev C++ funktioniert das so.



  • In moderneren C-Versionen (afaik ab C99) darfst du sowas machen - das nennt sich dann VLA (variable length array). In C++ ist das allerdings nicht vorgesehen, dort kann man für entsprechende Zwecke einen std::vector<> verwenden.



  • Danke für die Antwort.
    Ist das dann so, dass der Compiler Speicher auf dem Stack reserviert?
    Warum macht es dann Dev C++?


  • Mod

    Anaconda55 schrieb:

    Danke für die Antwort.
    Ist das dann so, dass der Compiler Speicher auf dem Stack reserviert?

    Ja, die VLAs liegen (im gegensatz zum vector) auf dem Stack.

    Warum macht es dann Dev C++?

    Nur weil es nicht im C++ Standard drinsteht, darf ein C++ Compiler es trotzdem unterstützen. Du kannst dich nur nicht drauf verlassen, dass es andere Compiler auch können.

    edit: Ist das nun als C oder als C++ Frage anzusehen?



  • Anaconda55 schrieb:

    Warum macht es dann Dev C++?

    Es gibt keinen Compiler, der C++ kann. Die können immer nur Teile. Und es sieht auch nicht so aus, als würde es in den nächsten 30 Jahren einen geben.



  • edit: Ist das nun als C oder als C++ Frage anzusehen?

    Ich programmiere eigentlich C99 aber heute ist es mir eben beim Dev C++ aufgefallen.
    Bei C++ würde ich das so jedoch nie machen.

    ... es nicht C++ Standard drinsteht, ...

    Danke. Frage erledigt.


Anmelden zum Antworten