#include #include struct Memory{ int *data; int size; }; void init(struct Memory *mem, int s){ // das was in c++ der Konstruktor macht mem->size = s; mem->data = (int*) malloc(s * sizeof(int)); } void resize(struct Memory *mem, int s){ // neuen Speicher reservieren int *new_data_ptr = (int*) malloc(s * sizeof(int)); // Speicher kopieren for (int i=0; isize; i++){ new_data_ptr[i] = mem->data[i]; } free(mem->data); // alten Speicher freigeben mem->data = new_data_ptr; // auf neuen Speicher zeigen lassen mem->size = s; // Größe updaten } void write(struct Memory *mem, int index, int value){ if (index<0){ printf("Fehler: Index < 0"); return; } if (index>=mem->size){ resize(mem, index+1000); } mem->data[index] = value; } int read(struct Memory *mem, int index){ if (index<0){ printf("Fehler: Index < 0"); return 0; } if (index>=mem->size){ return 0; } return mem->data[index]; } int main(){ struct Memory m; init(&m, 100); write(&m, 333, 1234); printf("%d\n", read(&m, 333)); /* // Speicher in C reservieren und freigeben int n = 100; int *ptr = (int*)malloc(n*sizeof(int)); ptr[10] = 123; printf("ptr[10]=%d\n", ptr[10]); free(ptr); // Speicher in C++ reservieren und freigeben ptr = new int[100]; ptr[10] = 321; printf("ptr[10]=%d\n", ptr[10]); delete[] ptr; */ }