Bonjour, je me posais la question comment considérer les références côté compilation et à l'exécution ?
Une référence c'est comme l'objet lui-même, lorsqu'on utilise une variable en écrivant le nom de la variable dans le code source, on utilise ce qu'elle contient, bref c'est sa référence. Mais c'est quand même un emplacement mémoire.
Et les pointeurs ne sont que des variables qui ont comme contenu une adresse mémoire. Le déférencement, le nom le dit c'est accéder à l'objet pointé en ayant sa référence, donc son adresse.
Est-ce que je peux considérer que en écrivant *pointeur que le compilateur remplace à la compilation ce texte par un indice qui à l'exécution sera remplacé par une adresse mémoire relative à l'emplacement du début du programme en mémoire ?
Mais dans ce cas quelle est la différence réelle entre la mémoire statique et dynamique ? Puisque le compilateur ne peut pas réserver une place mémoire d'avance avant l'exécution même du programme, donc c'est quand même de la mémoire alloué dynamiquement à l'exécution.
Tandis que avec le new il alloue tout de même dynamiquement alors ou est la différence en fait ?
En théorie si le compilateur supporterait cela, au lieu d'écrire le nom d'une variable dans le code on pourrait écrire une adresse mémoire = 5, du genre: 0x4F5474 = 5 ? Ce qui est tout à fait inconcevable puisqu'on ne sait pas ce qu'il y a cette adresse, mais je parles d'un point de vue purement théorique.
Je cherches à comprendre le fondement de tout programme exécuté sous windows, ce qui se passe vraiment en fait.![]()
Partager