Culture Générale


Cette partie n'est pas vraiment une partie réelle du cours tout simplement parce qu'elle n'est utile que pour votre culture générale.

Pourquoi les pointeurs font-ils 4 octets ?
En réalité ils ne font pas obligatoirement 4 octets. Une adresse fait la taille d'un entier (int) ! Si vous utilisez un compilateur C++ en 32 bits alors il fera 4 octets et si vous utilisez un compilateur C++ 64 bits il fera 8 octets !
C'est pour cela que les applications 64 bits ne marche pas sur un OS 32 bits, car l'adressage ne ce fait pas sur le même nombre de bits.
A savoir les OS 64 bits sont utilisés qu'à partir de 4 Go de RAM (pour être utile avec le nombre d'adresses possible à utiliser).
Si vous utilisez un OS 32 bits avec plus de 4 Go de RAM, toutes les RAM au-dessus ne sera jamais utilisés !

On est vraiment obligé de libérer la mémoire manuellement quand un pointeur ne sert plus ?
Oui ! Si on ne le fait pas, notre programme prendra plus de mémoire qu'il ne faudrait ! Et si votre application tourne h24 vous imaginez le nombre de Go de RAM qu'il faudrait si on ne vidais pas la RAM ! Ce problème s'appelle une fuite de mémoire. La mémoire est alloué mais jamais vidée. Cela peut venir d'un oublié du développeur ou du programme (après compilation) qui n'arrive pas à vider un espace mémoire.
Pour simplifier ce problème il existe le garbage collector dans différents langages comme le JAVA et le C# et plus ressemant en C++ grâce au pointeur intelligent (shared_ptr).
Le but du garbage collector est de vérifier (par cycle) toute la mémoire d'une application et de désallouer les espaces mémoire qui ne sont plus utilisés. Utile ? Oui, mais très gourmand en ressources.