Blender3D
Vitamin C++
[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
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:
Grüße, Blender3D
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]))
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
Zuletzt bearbeitet: