Bonjour

Je dois acquerir des données, et supprimer les plus vieilles pour les remplacer par les plus récentes, en gardant les n dernieres données en mémoire.

J'ai bien une idée mais je voulais savoir si c'est correct.

soit des données en int, voilà comment je ferait :

initialisation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
//soit TAILLE la taille d'un jeu de donnée.
//soit N le nombre de buffers à garder en mémoire
int ** buffer;
buffer = (int *)malloc(N*sizeof(int*));
//ici une boucle pour chaque buffer[i] on fait un malloc de taille sizeof(int)*TAILLE
ensuite a chaque fois qu'on enregistre de nouvelles données :
on décale les pointeurs des données.
Sachant que dans buffer[n-1] on a les données les plus récentes et dans buffer[0] les plus vieilles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
//on fait pointer le dernier element vers l'adresse des données les plus vieilles
buffer[N-1] = buffer[0];
//decalage des données
for(i =  0 ; i < N-1 ; i++) {
   buffer[i] = buffer[i+1];
}
 
//on fait l'acquisition des nouvelles données dans le dernier élement
acquerir_donnees(buffer[N-1]);
Est ce que c'est une bonne solution?
merci