realloc durch new



  • wie kann ich mit new ein feld reallokieren?

    kleines bsp.:

    int main(){
      int *piZeiger = new int;
      char cBuffer;
      int nCount = 0;
    
      do{
        cout<<"Geben sie eine Zahl ein: "<<endl;
        cin >>piZeiger[nCount];		
    
        cout<<"Mit ESC abbrechen?"<<endl;
        cBuffer=getch();
    
        nCount++;
    
          if(cBuffer != 27){	//realloc soll durch new ersetzt werden
            piZeiger = (int*)realloc(piZeiger,sizeof(int)*(nCount+1));
          }
        }while(cBuffer != 27);
    
        for(int i=0;i<nCount;i++){
          cout<<"Zahl"<<i<<": "<<piZeiger[i]<<endl;
        }
    
        return 0;
    }
    


  • Du findes hier eine Diskussion darüber:
    http://www.c-plusplus.net/forum/viewtopic.php?t=51982&start=15

    und hier ist der Code, den Du da acuh findes.

    int n=5;  
    int *feld;  
    feld=new int [n];  
    { 
       int * temp = feld=new int [2*n];  
       std::copy(feld, feld + n, temp); 
       delete [] feld; 
       feld = temp; 
    }
    

    Die sache die Du da machst, ist eh sehr heikel.
    Du erstellt ein Feld mit new und veränderst es mit realloc. Dies geht nur, wenn auf deinem System new durch malloc implementiert ist, also vorsicht.



  • An der stelle auch einen Hinweis auf std::vector<>


Anmelden zum Antworten