#include #include #include class Memory{ private: int *data; long size; public: Memory(long s){ this->data = (int*) calloc(s,sizeof(int)); this->size = s; } ~Memory() { delete[] this->data; // Speicher wieder freigeben } void resize(long s){ // Speicher reservieren int* new_mem = new int[s]; if (new_mem == NULL){ printf("Fehler: Speicher konnte nicht reserviert werden.\n"); assert(true); } // kopiere alte Daten for (int i=0; isize; i++){ new_mem[i] = this->data[i]; } // gebe alten Speicher frei delete[] this->data; // setze den Pointer auf neues Memory this->data = new_mem; // lege die Größe size auf die neue Größe s fest this->size = s; } int read(long index){ if (index<0){ printf("Fehler: Index negativ!\n"); return 0; } if (index>=this->size){ return 0; } return this->data[index]; } void write(long index, int value){ if (index<0){ printf("Fehler: Index negativ!\n"); return; } if (index>=this->size){ resize(index+1000); } this->data[index] = value; } }; int main(){ Memory m(100); m.write(155, 123); printf("m[155]=%d\n",m.read(155)); printf("m[156]=%d\n",m.read(156)); }