dynamische Speicherreservierung

Dieses Thema im Forum "C/C++" wurde erstellt von Blender3D, 25.03.2011.

  1. #1 Blender3D, 25.03.2011
    Zuletzt bearbeitet: 26.03.2011
    Blender3D

    Blender3D Vitamin C++

    Dabei seit:
    17.09.2007
    Beiträge:
    228
    Zustimmungen:
    0
    Ort:
    /root
    [gelöst] dynamische Speicherreservierung

    Hallo, Unixboardler!

    Ich hab ein kleines Projekt am laufen und muss dafür wissen, wie ich zur Laufzeit ein bestimmtes Array um genau ein Element vergrößern kann.
    Z.B. hab ich eine Array A von der Länge 5. Und jetzt möchte ich ohne den Inhalt zu verlieren das Array auf die Größe 6 vergrößern.
    Ich hab realloc schon kennen gelern, aber ich hab das kleine problem, dass ich nicht weiß, wie ich zur Laufzeit die Länge des Arrays feststellen kann.
    Der Code
    Code:
    (sizeof(A) / sizeof(A[0]))
    
    liefert leider immer das gleiche Ergebnis (das Selbe, wie sizeof(A[0])).

    Damit ihr euch ein Bild von der Lage machen könnt ist hier der gesamte Code:

    Code:
    #include <iostream>
    #include <cstdlib>
    
    class stuff
    {
    	public:
    		int* st;
    		stuff();
    		~stuff();
    		void addToStuff();
    };
    
    stuff::stuff()
    {
    	st = new int[0];
    	st[0].a = st[0].b = 10;
    }
    
    stuff::~stuff()
    {
    	delete[] st;
    }
    
    void stuff::addToStuff()
    {
    	int* tmp = (int *) malloc(sizeof(int));
    	tmp = (stuff *) realloc(st, /*Hier muss die neue Größe des Arrays ((alte Länge + 1) * sizeof(int)) hinein*/);
    
    	if(tmp != NULL)
    	{
    		st = tmp;
    		tmp = NULL;
    	}
    	else
    	{
    		std::cout << "Unable to reallocate Memory" << std::endl;
    	}
    
    	delete[] tmp;
    }
    
    int main()
    {
    	stuff S;
    
    	S.addToStuff();
    
    	return 0;
    }
    
    Grüße, Blender3D
     
  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. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Du bist auf den Unterschied zwischen einem Array und einem Pointer, der auf einen zugewiesenen Speicherbereich zeigt, gestossen. Fuer jenen funktioniert 'sizeof(A)/sizeof(A[0])', weil der Speicher bereits zur Kompilierzeit festgelegt ist. Wenn Du Dir klar machst, dass Du in Deinem Programm mit Zeigern arbeitest, verstehst Du auch bald, weswegen 'sizeof(A)/sizeof(A[0])' nicht das Ergebnis liefert, das Du Dir erwuenschst.
    In C musst Du meines Wissens nach auch stets die aktuelle Groesse eines Speicherbereichs mituebergeben, bzw. Du musst diese Groesse in der Klasse mitspeichern und mitverwalten. Wenn Du es einfacher und sicherer (!) haben moechtest, dann benutze std::vector statt eines Zeigers.
     
  4. #3 Blender3D, 25.03.2011
    Blender3D

    Blender3D Vitamin C++

    Dabei seit:
    17.09.2007
    Beiträge:
    228
    Zustimmungen:
    0
    Ort:
    /root
    Ok.. Danke. Mit Vektor funktioniert es jetzt.

    Grüße, Blender3D
     
Thema:

dynamische Speicherreservierung

Die Seite wird geladen...

dynamische Speicherreservierung - Ähnliche Themen

  1. lokaler Mailserver mit "richtigen" TopLevel Domains machbar (Dynamische IP)

    lokaler Mailserver mit "richtigen" TopLevel Domains machbar (Dynamische IP): Hallo, ich plane meinen Vserver zu kündigen (nutze ihn zu wenig) und die Dienste hier lokal in der DMZ laufen zu lassen. WWW bzw. MySQL kein...
  2. Fedora Core9: Dynamische DNS-Updates über DHCP einrichten

    Fedora Core9: Dynamische DNS-Updates über DHCP einrichten: hi leutz, ich möchte unter Fedora Core 9 dynamische DNS-Updates über DHCP mittels einem Key DHCP_UPDATER einrichten. Den Key habe ich mittels...
  3. Bind mit dynamischem DNS unter Fedora Core 9

    Bind mit dynamischem DNS unter Fedora Core 9: Hi leutz, möchte unter Fedora Core 9 bind 9.5.0 mit dynamischem dns laufen lassen. Wenn in der /etc/named.conf die Option allow-query {...
  4. RAID 5 / Dynamische RAID-Lösung gefunden !!

    RAID 5 / Dynamische RAID-Lösung gefunden !!: Hallo, ich hatte bereits in einem anderen Thread in diesem Forum "Laufwerke / Speichermedien" nach einer Lösung für ein dynamisches RAID gefragt....
  5. Lösung für ein dynamisches RAID gesucht

    Lösung für ein dynamisches RAID gesucht: Hallo, ich suche eine RAID-Lösung die ich dynamisch erweitern kann. RAID0 (striping) kommt nicht in Frage, da das ganze auf...