allocation de mémoire alignée - C - Programmation
Marsh Posté le 08-03-2006 à 03:07:59
ou interviens tu dans l'histoire?
tu dois reecrire malloc et free? ou juste faire en sorte que les pointeurs soient alignes au retour de malloc?
car si tel est le cas, malloc te renvois automatiquement des pointeurs alignes en memoire...
Marsh Posté le 08-03-2006 à 03:19:07
Salut,
je dois me servir de malloc et free. Par contre les pointeurs sont alignés automatiquement, mais moi j'aurais besoin de les aligner en fonction d'une valeur d'alignement envoyé.
Marsh Posté le 08-03-2006 à 04:10:25
normalement j'ai fini :
Code :
|
Marsh Posté le 08-03-2006 à 10:07:16
gee a écrit : je dois écrire une fonction d'allocation de mémoire qui l'alignera suivant la valeur envoyée (avec la fonction free qui va avec bien sûr) mais j'ai du mal à comprendre le principe. |
Ce que tu veux faire n'est pas portable.
En effet, soit il s'agit d'un alignement propre à ta machine at dans ce cas, malloc() fourni déjà le bon alignement pour tout type d'objet C possible.
Mais si il s'agit d'un alignement 'physique' pour de la DMA ou un composant electronique particulier, par exemple, il faut faiire ton propre allocateur. En effet, les adresses vues de l'utilisateur n'ont absolument rien à voir avec les adresses physiques, du moins sur mes machines avec MMU (c'est le cas quasiment partout, y compris en embarqué).
Je pense qu'il y a un problème de conception.
Explique ce que tu veux faire exactement et surtout pourquoi.
Marsh Posté le 08-03-2006 à 14:23:07
Salut,
oui ce sont des adresses virtuelles je sais
je n'ai pas encore exactement compris le but, c'est un exercice qu'on m'a donné à faire. Mais en effet sans comprendre le but ce n'est pas totalement évident ...
je pense devoir utiliser malloc pour allouer, sauf que malloc alligne en fontcion de la taille de la variable (enfin plus le compilateur mais bon ..) mais là il faut aligner à la demande
Marsh Posté le 08-03-2006 à 15:00:58
oui ca rejoint cette fonction, sauf que là il faut que je code l'extension à malloc moi même . Plus memalign tout court en fait, bien qu'obsolète.
Marsh Posté le 08-03-2006 à 02:32:34
Salut,
je dois écrire une fonction d'allocation de mémoire qui l'alignera suivant la valeur envoyée (avec la fonction free qui va avec bien sûr) mais j'ai du mal à comprendre le principe.
J'ai compris le principe de l'alignement (enfin je crois), mais pas encore comment le faire.
Au début je pensais pouvoir faire un truc genre :
char * ptr = (char *) malloc (size);
puis regarder si ptr est sur une bonne adresse par rapport à l'aligment demandé, et faire quelque chose en suite, mais cela n'a pas l'air d'une bien bonne idée ...
J'ai trouver une source toute faite mais j'ai envie d'apprendre, et de le faire à ma manière ...
Pourtant je ne trouve pas l'illumination
Merci bien,