Bonjour tout le monde !
Je n'ai pas réussi à trouver de meilleur titre et je m'en excuse.
Dans un petit bout de code que j'écris, je lis aujourd'hui la mémoire (une image en fait) en parcourant deux pointeurs:
C'est un exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int *src_ptr = (int *)mon_adress; int *src_ptr2 = src_ptr+320;
Ensuite chacun de ces pointeurs est utilisé dans une boucle for() en les incrémentant pour parcourir la ligne, puis il sont décalés pour passer à la ligne suivante:
J'ai ici deux problèmes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 for (j = 0 ; j < MAX_HEIGHT ; j++, src_ptr+=320, src_ptr2+=320) { for (int i = 0 ; i < 320 ; i++) { int a = *src_ptr++; int b = *src_ptr2++; // Un traitement complexe (ou pas) } }
- Je ne peux pas parcourir l'ensemble de l'image, je suis obligé de parcourir la dernière ligne séparément
- Surtout, je lis deux fois la même ligne ! src_ptr va pointer sur l'ancien src_ptr2 !
L'idée serait donc de mettre en place un petit buffer qui contiendra la ligne qu'il ne faut pas lire deux fois, et de le rendre "circulaire" pour basculer les lignes correctement.
Mais peut-être est-il possible d'exploiter le C++ et sa puissance pour faire cela ? Car aujourd'hui, je dois bien dire que mon code ressemble beaucoup plus à du C.
Merci d'avance aux cadors qui sauront me donner les bonnes idées !
Partager