Articles of déréférencement

Déréférencer un pointeur à 0 dans C

Parfois, les données à l’adresse de mémoire 0x0 sont très utiles – prenons l’exemple IVT en mode réel x86: il commence à 0x0 et contient des pointeurs pour interrompre les gestionnaires: un dword à 0x00 est un pointeur vers un gestionnaire d’erreur de division par zéro. Cependant, la norme de langage C11 interdit le déréférencement […]

Pourquoi le code appelle-t-il explicitement une méthode statique via un pointeur null?

J’ai vu du code comme celui-ci dans quelques projets anciens: class Class { static void Method() {} }; ((Class*)0)->Method(); Ce code contient un comportement indéfini car il inclut le déréférencement d’un pointeur null (peu importe ce qui se passe après). Cela n’a vraiment aucun sens – la dissortingbution est là pour fournir le nom du […]

Quelles sont les règles exactes de déréférencement automatique de Rust?

J’apprends / expérimente Rust, et dans toute l’élégance que je trouve dans ce langage, il y a une particularité qui me déconcerte et qui semble totalement déplacée. Rust dérive automatiquement les pointeurs lors des appels de méthode. J’ai fait des tests pour déterminer le comportement exact: struct X { val: i32 } impl std::ops::Deref for […]

Pourquoi l’opérateur flèche (->) en C existe-t-il?

L’opérateur point ( . ) Permet d’accéder à un membre d’une structure, tandis que l’opérateur de flèche ( -> ) en C permet d’accéder à un membre d’une structure référencé par le pointeur en question. Le pointeur lui-même ne possède aucun membre auquel on pouvait accéder avec l’opérateur point (c’est en fait uniquement un nombre […]