arraygröße anpassen

halfo11

Grünschnabel
Hallo,

ich muss innerhalb einer Funktion mehrere Arrays an die benötigte Größe anpassen. Allerdings stehen in dem bereits zu verfügung stehen array schon daten die ich weiter benutzten will. Wenn ich mit realloc es dann vergrößere wird offenbar der Inhalt nicht mitgenommen ?

Wie bekomme ich das hin ? Hier ein Beispiel: (in C)

Code:
void main()
{
	double *f;
	int size = 5,i;
	f = static_cast<double*>(malloc(size * sizeof(double)));

	
	for(i = 0;i<=10;i++)
	{
		
		if(i >= size)
		{
			size = size + 5;
			f = static_cast<double*>(realloc(f,size));
			
			if(f == NULL)
			{
				printf("nicht genuegend speicher");
				exit(1);
			}
		}

		f[i] = static_cast<double>(i);
	}
	for(i = 0;i<=10;i++)
	{
		printf("%.2lf\n",f[i]);
	}
}

Ich möchte das jetzt die Zahlen 0-10 ausgeben werden. 5-10 funktioniert natürlich aber 0-4 nicht.

gruß
 
Zuletzt bearbeitet:
hi,
reserviere doch einfach einen neuen Speicherbereich, kopiere die Daten und lösche den alten

bsp:
C:
int* p = (int*)malloc(sizeof(int) * 100);

// ....


int* pNew = (int*)malloc(sizeof(int) * 200);
memcpy(pNew, p, sizeof(int) * 100);
free(p);
 
Hi Flegmon,

so geht das natürlich aber eigentlich müsste das realloc von allein machen...

Kann jemand mir sagen wie das mit realloc funktioniert?

gruß
 
Zuletzt bearbeitet:
Bei deinem realloc hast du die Grösse falsch angegeben. Das sollte size * sizeof( double ) sein. Mit anderen Worten, eigentlich sollte das grauenhaft abstürzen (mit eingebautem Reformat), aber da hast du noch mal Glück gehabt :D

Edit: Ooch, ein blöder Spruch, und schon war jemand schneller ;)
 
Hallo,

ah jetzt sehe ich den Fehler...

sollte also analog zu malloc angewiesen werden :

Code:
f = static_cast<double*>(realloc(f,size*sizeof(double)));

Hat mich irgentwie verwirrt da ich den "falschen Aufruf" so im Buch gefunden habe...

Vielen dank

Gruß
 
Zuletzt bearbeitet:
Zurück