c++ Array Problem



  • Ich möchte momentan ein Array dynamisch erweitern aber aus irgendeinen grund funktioniert das nicht ich selber glaube, dass das richtig ist...
    Vielleicht findet sich jemand der ein bisschen heller als ich im Kopf ist 😛

    Ich danke im voraus 😉

    //Class in header
    class GraphBuilder
    {
      //[...]
      private:
      float* values;
      int amount;
    
      public:
      void addValue(float);
      GraphBuilder(TPaintBox* pb);
    };
    
    // CPP
    
    GraphBuilder::GraphBuilder(TPaintBox* paintbox)
    {
    	pb = paintbox;
    	amount = 0;
        values = new float[1];
    }
    
    void GraphBuilder::addValue(float val)
    {
    
         // increment amount of saved values by 1
    	 amount++;
    
         float *tempValues = new float[amount];
    
         for (int i = 0; i < amount - 1; i++)
         	tempValues[i] = values[i];
    
         tempValues[amount-1] = val;
    
         values = new float[amount];
    
         for (int i = 0; i < amount; i++)
         	values[i] = tempValues[i];
    };
    


  • Was funktioniert denn nicht? Stürzt Dir etwa Dein System ab, weil Du den Speicher nie frei gibst?

    VG
    EDIT: Benutze lieber std::vector<float>



  • std::vector


  • Mod

    mgaeckler schrieb:

    Was funktioniert denn nicht? Stürzt Dir etwa Dein System ab, weil Du den Speicher nie frei gibst?

    lol

    Der Fehler liegt wohl hier

    amount = 0;
        values = new float[1];
    


  • Arcoth schrieb:

    mgaeckler schrieb:

    Was funktioniert denn nicht? Stürzt Dir etwa Dein System ab, weil Du den Speicher nie frei gibst?

    lol

    Der Fehler liegt wohl hier

    amount = 0;
        values = new float[1];
    

    Wie heißt der Fehler?

    Außerdem ist das nur einer von vielen.



  • mgaeckler schrieb:

    Was funktioniert denn nicht? Stürzt Dir etwa Dein System ab, weil Du den Speicher nie frei gibst?

    VG

    Dass Array ist wenn ich es Debug Mode anschaue nur einen Groß heißt array[0] ist mit der ersten hinzugefügten zahl beschrieben [1-n} existieren nicht mal

    vectoren hat ich noch nicht..

    Es könnte ja auch einfach an den Compiler liegen die schule sagt wir müssen die IDE nutzen: Embarcadero C++ Builder XE3 (Ich hab gelesen es gibt schon XE13) von denen...



  • mgaeckler schrieb:

    Wie heißt der Fehler?

    0



  • Arrays gehen nicht dynamisch.



  • Eine Information noch ich habe das ganze nochmal in CodeBlocks in einer Consolenanwendung getestet funktioniert.... liegt anscheinend echt an der IDE ich mache der schule sowas von eine ansage



  • arayni schrieb:

    mgaeckler schrieb:

    Was funktioniert denn nicht? Stürzt Dir etwa Dein System ab, weil Du den Speicher nie frei gibst?

    VG

    Dass Array ist wenn ich es Debug Mode anschaue nur einen Groß heißt array[0] ist mit der ersten hinzugefügten zahl beschrieben [1-n} existieren nicht mal

    vectoren hat ich noch nicht..

    Es könnte ja auch einfach an den Compiler liegen die schule sagt wir müssen die IDE nutzen: Embarcadero C++ Builder XE3 (Ich hab gelesen es gibt schon XE13) von denen...

    Der Debugger vom C++ Builder sollte Dir auch die anderen anzeigen können.



  • mgaeckler schrieb:

    arayni schrieb:

    mgaeckler schrieb:

    Was funktioniert denn nicht? Stürzt Dir etwa Dein System ab, weil Du den Speicher nie frei gibst?

    VG

    Dass Array ist wenn ich es Debug Mode anschaue nur einen Groß heißt array[0] ist mit der ersten hinzugefügten zahl beschrieben [1-n} existieren nicht mal

    vectoren hat ich noch nicht..

    Es könnte ja auch einfach an den Compiler liegen die schule sagt wir müssen die IDE nutzen: Embarcadero C++ Builder XE3 (Ich hab gelesen es gibt schon XE13) von denen...

    Der Debugger vom C++ Builder sollte Dir auch die anderen anzeigen können.

    Ja denke ich auch aber aber das array wird ja einfach nicht größer ich hab das so in der art schon des öfteren gemacht hat immer prima funktioniert


  • Mod

    arayni schrieb:

    Dass Array ist wenn ich es Debug Mode anschaue nur einen Groß heißt array[0] ist mit der ersten hinzugefügten zahl beschrieben [1-n} existieren nicht mal

    Bloß, weil der Debugger etwas nicht von sich aus anzeigt, heißt das nicht, dass es nicht da wäre. Der Debugger richtet sich zunächst einmal nur nach dem, was deklariert wurde. values ist bloß ein Zeiger auf float. Typischerweise folgt der Debugger nicht einzelnen Allokationen, und merkt sich, welchen Typ und welche Größe diese im Einzelnen haben.



  • camper schrieb:

    arayni schrieb:

    Dass Array ist wenn ich es Debug Mode anschaue nur einen Groß heißt array[0] ist mit der ersten hinzugefügten zahl beschrieben [1-n} existieren nicht mal

    Bloß, weil der Debugger etwas nicht von sich aus anzeigt, heißt das nicht, dass es nicht da wäre. Der Debugger richtet sich zunächst einmal nur nach dem, was deklariert wurde. values ist bloß ein Zeiger auf float. Typischerweise folgt der Debugger nicht einzelnen Allokationen, und merkt sich, welchen Typ und welche Größe diese im Einzelnen haben.

    Beim C++ Builder 5 ist das so und ich wüsste auch keinen Grund, daß dies der C++ Builder 13 besser machen sollte. Er hat normalerweise nicht das Wissen dazu. Daher mußt Du wie camper schon schrieb, dem Builder sagen, wieviele Daten Du angezeigt bekommen möchtest.

    VG


Log in to reply