Cours:InfoEmbarqueeThread : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
Ligne 36 : Ligne 36 :
 
||
 
||
  
 +
<source lang=cpp>
 +
int* memoireAllouee = NULL; // On crée un pointeur sur int
 +
memoireAllouee = malloc(sizeof(int)); // La fonction malloc inscrit dans notre pointeur l'adresse qui a été reservée.
 +
 +
Complexe * z1 = new Complexe(2,5);
 +
</source>
 
|}
 
|}
  
Ligne 72 : Ligne 78 :
 
*https://www.tchap.fr/la-pile-stack-et-le-tas-heap/
 
*https://www.tchap.fr/la-pile-stack-et-le-tas-heap/
 
*https://cermics.enpc.fr/polys/info1/main/node74.html
 
*https://cermics.enpc.fr/polys/info1/main/node74.html
 +
*https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/16595-creez-des-variables-grace-a-lallocation-dynamique

Version du 20 septembre 2023 à 17:52

Kesako

Pile/Tas

zone mémoire Taille Usage Performances
Stack (pile) fixe variables/paramètres ... des fonctions selon mémoire
Heap (tas) sans objet allocation dynamique un peu moins rapide (gestion du tas, partage entre thread => doit être thread-safe)


utilisation de la pile utilisation du tas
int f1(int n)
{
   int res;
   res= ...n1;
   return res;
}

int main()
{
  int a,b;
  b=f1(a);
}
int* memoireAllouee = NULL; // On crée un pointeur sur int
memoireAllouee = malloc(sizeof(int)); // La fonction malloc inscrit dans notre pointeur l'adresse qui a été reservée.

Complexe * z1 = new Complexe(2,5);

Processus

Le lancement d'un programme sous Unix (norme posix ) entraîne la création d'un nouveau processus et donc l'allocation d'une zone mémoire avec plusieurs parties :

ProcessusUnix.gif


  • le segment texte qui contient le programme exécutable
  • le segment statique qui contient les objets globaux et statiques
  • le segment de pile ( stack ) qui contient les données des fonctions
  • le segment de tas ( heap ) qui contient les données allouées dynamiquement ( new / malloc )

Thread

ThreadPosix.png


Attention à la durée de vie des objets dans la pile !!! => préférez le tas ?!


spécialisation de la classe QThread

Mutex

Ressources