Tableau dynamique arduino
Fermé
dj naoki
Messages postés
511
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
-
2 oct. 2015 à 19:38
totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 - 3 oct. 2015 à 14:15
totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 - 3 oct. 2015 à 14:15
Bonjour,
je cherche depuis au moins 3 h comment créer un tableau dynamique avec arduino mais je n'y parvient pas ...
pouvez vous m'aider
merci
je cherche depuis au moins 3 h comment créer un tableau dynamique avec arduino mais je n'y parvient pas ...
pouvez vous m'aider
merci
A voir également:
- Tableau arduino
- Tableau word - Guide
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Trier tableau excel - Guide
- Tableau coefficient marge ✓ - Forum Excel
2 réponses
totodunet
Messages postés
1377
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
5 mars 2020
199
Modifié par totodunet le 3/10/2015 à 12:59
Modifié par totodunet le 3/10/2015 à 12:59
salut,
char* est une variable type pointeur qui pointe sur un char. en somme cette variable stocke une adresse mémoire où se situe le char.
là je viens de créer un tableau de 10 char. tabchar est un pointeur qui pointe vers le premier char de mon tableau. malloc est la fonction qui permet d'allouer la mémoire, elle prend en paramètre la taille à allouer et sizeof permet, t'as raison de savoir combien prend un char en mémoire. Donc sizeof(char)*10 me donne la taille mémoire de 10 char.
Contrairement en Java, on peut désallouer et libérer la mémoire comme on veut. Il faut juste faire très attention aux erreurs de segmentation et de bien vérifier que le tableau n'est pas pointé vers d'autres pointeurs. Pour la désallocation, il suffit d'utiliser la fonction free et mettre un pointeur en paramètre.
voilà mon tableau est désalloué, mes 10 char sont détruits et la mémoire peut être utilisée pour autre chose.
Pour la ré-allocation, donc ce qui t'intéresse pour faire ton tableau dynamique, faut utiliser realloc et lui donner en paramètre ton pointeur vers le tableau et la nouvelle taille.
J'ai demandé d'augmenter mon tableau de char de 10 char de plus. J'ai pris soin de stocker la nouvelle adresse mémoire de cette ré-allocation dans une variable temporaire, car en effet la ré-allocation peut mal se passer où que la mémoire est remplie et que ce n'est plus possible d'ajouter. Je vérifie que l'adresse n'est pas à NULL puis seulement ensuite je l'affecte au pointeur tabchar.
Idem pour malloc, il faut aussi prendre soin de vérifier que l'allocation ait pu se faire coorectement en regardant juste après que tabchar ne soit pas à NULL. Ce ne sont que des conseils, tu verras dans la littérature ou des sites, que pas tous ne l'applique malheureusement.
Un tuto bien expliqué en français dessus :
https://openclassrooms.com/courses/allocation-dynamique-en-c-complement
Qui ne tente rien n'a rien
char* est une variable type pointeur qui pointe sur un char. en somme cette variable stocke une adresse mémoire où se situe le char.
char* tabchar=malloc(sizeof(char)*10);
là je viens de créer un tableau de 10 char. tabchar est un pointeur qui pointe vers le premier char de mon tableau. malloc est la fonction qui permet d'allouer la mémoire, elle prend en paramètre la taille à allouer et sizeof permet, t'as raison de savoir combien prend un char en mémoire. Donc sizeof(char)*10 me donne la taille mémoire de 10 char.
Contrairement en Java, on peut désallouer et libérer la mémoire comme on veut. Il faut juste faire très attention aux erreurs de segmentation et de bien vérifier que le tableau n'est pas pointé vers d'autres pointeurs. Pour la désallocation, il suffit d'utiliser la fonction free et mettre un pointeur en paramètre.
free(tabchar);
voilà mon tableau est désalloué, mes 10 char sont détruits et la mémoire peut être utilisée pour autre chose.
Pour la ré-allocation, donc ce qui t'intéresse pour faire ton tableau dynamique, faut utiliser realloc et lui donner en paramètre ton pointeur vers le tableau et la nouvelle taille.
char* tabchar_tmp=realloc(tabchar, sizeof(char)*20); if(tabchar_tmp!=NULL){ tabchar=tabchar_realloc; }
J'ai demandé d'augmenter mon tableau de char de 10 char de plus. J'ai pris soin de stocker la nouvelle adresse mémoire de cette ré-allocation dans une variable temporaire, car en effet la ré-allocation peut mal se passer où que la mémoire est remplie et que ce n'est plus possible d'ajouter. Je vérifie que l'adresse n'est pas à NULL puis seulement ensuite je l'affecte au pointeur tabchar.
Idem pour malloc, il faut aussi prendre soin de vérifier que l'allocation ait pu se faire coorectement en regardant juste après que tabchar ne soit pas à NULL. Ce ne sont que des conseils, tu verras dans la littérature ou des sites, que pas tous ne l'applique malheureusement.
char* tabchar; if(tabchar=malloc(sizeof(char)*10)==NULL){ printf("Erreur dans l'allocation mémoire !"); return EXIT_FAILURE; } else{ //mon code ici }
Un tuto bien expliqué en français dessus :
https://openclassrooms.com/courses/allocation-dynamique-en-c-complement
Qui ne tente rien n'a rien
Modifié par totodunet le 3/10/2015 à 13:10
Modifié par dj naoki le 3/10/2015 à 13:18
je vais regarder de mon coté et je te dirais si j'ai encore besoin d'aide mais la ca devrais rouler
merci encore.
3 oct. 2015 à 14:15