Devo realizzare per un esame un allocatore di memoria... le specifiche sono un po' più complesse ma il problema di fondo è il seguente:
Devo realizzare una struttura che serva da memoria, in particolare ho pensato a dichiararmi un array di char visto che char ha dimensione fissa di 1 byte;
L'idea dell'allocatore è simile a quella che è anche presente sul libro Kerninghan,Ritchie "Il linguaggio C" e che riporto qui sotto:
codice:
//ALLOCATORE SEMPLICISTICO DI MEMORIA
#include <stdio.h>
#include <stdlib.h>
#define ALLOCSIZE 100
typedef struct memoria{
int posizioneAttuale;
char* struttura;
int dimensione;
}memoria;
//crea la memoria
memoria* creaMemoria(int dim)
{
memoria* mem = malloc(sizeof(memoria));
mem->dimensione=dim;
mem->posizioneAttuale=0;
return mem;
}
//alloca uno spazio di dimensione n in memoria
char* alloc(int n, memoria * memory) /* ritorna un puntatore ad n caratteri */
{
int vecchiaPosizione = memory->posizioneAttuale;
memory->posizioneAttuale += n;
return memory->struttura+vecchiaPosizione;
}
int main(int argc, char* argv[])
{
memoria* mem = creaMemoria(10);
char* stringa= alloc(5,mem);
stringa="ecco";
printf("%s\n",stringa);
printf("%s\n",mem->struttura);
}
In fase di debug vedo che quando assegno allavariabile stringa il valore "ecco" tale valore non viene riportato nella mia memoria ovvero mem->struttura, questa cosa si vede anche dal fatto che la seconda printf non stampa nulla...
Come posso fare per memorizzare in fase di assegnamento il valore anche nella mia memoria?
HELP!!!