aboutsummaryrefslogtreecommitdiff
path: root/semestre 3/structures des données/tme/tme1-2/exo1/tme1_exo1p3.c
diff options
context:
space:
mode:
Diffstat (limited to 'semestre 3/structures des données/tme/tme1-2/exo1/tme1_exo1p3.c')
-rw-r--r--semestre 3/structures des données/tme/tme1-2/exo1/tme1_exo1p3.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/semestre 3/structures des données/tme/tme1-2/exo1/tme1_exo1p3.c b/semestre 3/structures des données/tme/tme1-2/exo1/tme1_exo1p3.c
new file mode 100644
index 0000000..577721c
--- /dev/null
+++ b/semestre 3/structures des données/tme/tme1-2/exo1/tme1_exo1p3.c
@@ -0,0 +1,45 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+typedef struct tableau{
+ int* tab;
+ int maxTaille;
+ int position;
+}Tableau;
+
+void ajouterElement(int a, Tableau *t){
+ t->tab[t->position]=a;
+ t->position++;
+}
+
+Tableau* initTableau(int maxTaille){
+ Tableau* t = (Tableau*)malloc(sizeof(Tableau));
+ t->position=0;
+ t->maxTaille=maxTaille;
+ /* les 400 bytes repeperes par valgrind proviennent d'ici : 400/4 = 100, 4 etant la taille d'un int ici */
+ t->tab=(int*)malloc(sizeof(int)*maxTaille);
+ return t;
+}
+
+void affichageTableau(Tableau* t){
+ printf("t->position = %d\n",t->position);
+ printf("[ ");
+ for (int i=0; i < (t->position); i++){
+ printf("%d ",t->tab[i]);
+ }
+ printf("]\n");
+}
+
+int main(){
+ Tableau* t;
+ t = initTableau(100);
+ ajouterElement(5,t);
+ ajouterElement(18,t);
+ ajouterElement(99999,t);
+ ajouterElement(-452,t);
+ ajouterElement(4587,t);
+ affichageTableau(t);
+ /* ce programme provoquait un leak car il ne liberait jamais tab */
+ free(t->tab);
+ free(t);
+}