Skip to content
Snippets Groups Projects
Verified Commit adf393af authored by orestis.malaspin's avatar orestis.malaspin
Browse files

ajout fontions

parent dba8a816
Branches
Tags
No related merge requests found
......@@ -116,6 +116,58 @@ $$
- Ceci est une matrice (un tableau de tableau).
# Tableau dynamique en argument d'une fonction
## Implémenter la fonction ci-dessous
```C
int32_t *p = malloc(50 * sizeof(*p));
initialize_to(p, 50, -1); // initialise un tableau à -1
free(p); // ne pas oublier
```
. . .
```C
void initialize_to(int32_t *p, size_t size, int32_t val) {
for (size_t i = 0; i < size; ++i) {
p[i] = val;
}
}
```
# Tableau dynamique retourné d'une fonction
## Implémenter la fonction ci-dessous
```C
// alloue un tableau de taille 50 et l'initilise à -1
int32_t *p = initialize_to(p, 50, -1);
free(p); // ne pas oublier
```
. . .
```C
uint32_t initialize_to(int32_t *p, size_t size, int32_t val) {
int32_t *p = malloc(size * sizeof(*p));
for (size_t i = 0; i < size; ++i) {
p[i] = val;
}
return p;
}
```
## Pourquoi on peut retourner un tableau dynamique et pas un statique?
. . .
* Le tableau est alloué sur le **tas** et non sur la **pile**.
* La mémoire est gérée manuellement sur le tas, automatiquement sur la pile.
# Les *sanitizers*
Problèmes mémoire courants:
......@@ -130,7 +182,7 @@ Outils pour leur détection:
* Valgrind (outil externe).
* Sanitizers (ajouts de marqueurs à la compilation).
Ici on utilise les sanitizers (modification de la ligne de compilation):
Ici on utilise les sanitizers (modification de la ligne de compilation, modifiez les *Makefile*):
```bash
gcc -o main main.c -g -fsanitize=address -fsanitize=leak
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment