Maison > Article > interface Web > Quand exactement se produit une relocalisation statique ?
Le moment précis où la relocalisation statique se produit est lorsque le programme est chargé. La relocalisation statique fait référence au processus de conversion des adresses de référence absolues du programme en adresses de mémoire physique réelles avant l'exécution du programme. Dans les systèmes d'exploitation modernes, la relocalisation statique est effectuée par l'éditeur de liens lorsque le programme est chargé.
L'exemple de code spécifique est le suivant :
#include <stdio.h> // 全局变量,需要进行静态重定位 int global_var = 10; // 静态函数,也需要进行静态重定位 static void static_func() { printf("This is a static function. "); } int main() { printf("Before relocation: "); printf("Global variable: %p ", &global_var); printf("Static function: %p ", &static_func); // 程序加载后进行静态重定位 // 在这里进行具体的重定位操作 printf(" After relocation: "); printf("Global variable: %p ", &global_var); printf("Static function: %p ", &static_func); return 0; }
Dans le code ci-dessus, dans la fonction variable globale global_var
和静态函数static_func
都需要进行静态重定位。在main
, nous imprimons d'abord les adresses de ces deux variables et fonctions, puis effectuons des opérations de relocalisation statique spécifiques après le chargement du programme, et enfin imprimer à nouveau les adresses de ces deux variables et fonctions.
Le processus spécifique de relocalisation statique varie en fonction du système d'exploitation, mais il comprend généralement les étapes suivantes :
Après avoir terminé les étapes ci-dessus, les références absolues du programme sont converties avec succès en adresses de mémoire physique réelles et le programme peut fonctionner normalement.
Il est important de noter que la relocalisation statique est effectuée lorsque le programme est chargé, elle ne se produira donc qu'une seule fois au démarrage du programme. Lors de l'exécution du programme, si des opérations de chargement et de liaison dynamiques sont impliquées, la notion de relocalisation dynamique peut être impliquée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!