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

ajout fontions

parent dba8a816
No related branches found
No related tags found
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.
Finish editing this message first!
Please register or to comment