Autotest






Quelle fonction standard utilise-t-on pour arrêter immédiatement le programme en cas d'erreur critique (par exemple si un malloc n'a pas marché) ?

 critik

 stop

 exit

 end



Un int occupe 4 octets en mémoire. On crée un tableau de 10 int. Ce tableau est placé à l'adresse 15060 en mémoire.
A partir de quelle adresse pourra être stockée la prochaine variable en mémoire ? Autrement dit, quelle est la première adresse libre après le tableau ?

 15060

 15061

 15070

 15071

 15100

 15101



Quelles sont les étapes à suivre dans l'ordre lorsqu'on alloue dynamiquement de la mémoire ?

 malloc, vérification de la validité du pointeur, utilisation de la mémoire, free

 malloc, utilisation de la mémoire, free, vérification de la validité du pointeur

 free, vérification de la validité du pointeur, malloc, utilisation de la mémoire



Quelle est l'erreur qui s'est glissée dans ce programme ?

int main(int argc, char *argv[])

{

    int* pointeur = NULL;


    pointeur = malloc(sizeof(int));

    if (pointeur == NULL)

    {

        exit(0);

    }


    printf("Quel age avez-vous ? ");

    scanf("%d", &pointeur);

    printf("Vous avez %d ans\n", *pointeur);


    free(pointeur);

    


    return 0;

}

 Il y a une * en trop devant le pointeur dans la ligne du printf

 Il y a un & en trop devant le pointeur dans la ligne du scanf

 Il manque une * devant le pointeur dans la ligne du malloc



Que se passe-t-il si je fais l'opération suivante ?

malloc(sizeof(int) * 25);

 Cela réserve de la mémoire pour un int de 25 octets

 Cela réserve de la mémoire pour un tableau d'int de 25 cases

 Cela réserve de la mémoire pour un float de 25 octets

 Cela réserve de la mémoire pour un tableau de float de 25 cases



En résumé


  • Une variable occupe plus ou moins d'espace en mémoire en fonction de son type.
  • On peut connaître le nombre d'octets occupés par un type à l'aide de l'opérateur sizeof().
  • L'allocation dynamique consiste à réserver manuellement de l'espace en mémoire pour une variable ou un tableau.
  • L'allocation est effectuée avec malloc() et il ne faut surtout pas oublier de libérer la mémoire avec free() dès qu'on n'en a plus besoin.
  • L'allocation dynamique permet notamment de créer un tableau dont la taille est déterminée par une variable au moment de l'exécution.

Créé avec HelpNDoc Personal Edition: Documentation Qt Help facile