Un corps peut-il expliquer les différentes catégories de pointeur (comme les pointeurs sauvages)?quelle est la Différentes catégories de pointeurs?
Répondre
- Valid pointeur: un pointant vers un objet réel en mémoire
- pointeur non valide: un pointant vers la mémoire qui est pas ce qu'il est censé être. Pointeur: Un pointeur dont la valeur est 0 et ne pointe donc à rien.
- NULL
- Dangling pointeur (parfois aussi pointeur sauvage): un pointant vers la mémoire qui a été effacée/libérée. Pointeur: Pas vraiment un pointeur du tout, mais plutôt un objet qui agit comme un pointeur, mais qui gère la mémoire pour vous.
AFAIK La valeur du pointeur NULL n'a pas besoin d'être zéro (le modèle binaire peut varier d'une machine à l'autre), bien que la constante NULL soit nulle. –
Je pourrais classer "Dangling" et "Invalide" comme la même chose. Null aussi, vraiment, mais c'est invalide de manière vérifiable. –
Mais logiquement, ils sont différents. Un pointeur n'est pas valide si vous avez épuisé les limites ou si vous l'avez incorrectement attribué à la mauvaise adresse. Si vous l'avez oublié, il a déjà été libéré. –
Voici votre réponse:
... ajouter orthogonalement à la réponse de Steve -
- pointeur à une variable (
int*
,char*
, égalementvoid*
qui est un pseudo-type spécial qui doit toujours être jeté avant déréférencement aussi. pointeurs de pointeurs.) de pointeur
- à une fonction (
void(*)()
,int(*)(int)
) et ainsi de suite.)
La distinction est importante parce qu'une famille ne peut pas être moulée dans l'autre, et vice versa.
Il existe également des pointeurs de fonction qui pointent vers un code plutôt que vers des objets. Et des pointeurs vers des membres, qui nécessitent une instance de classe pour être entièrement déréférencés. Et des pointeurs vers les fonctions membres, qui pointent vers le code et requièrent une instance d'une classe pour la déréférencer complètement.
Il existe également différents types de pointeurs intelligents. Ils sont utilisés pour conclure des allocations de mémoire dynamique et suivre la propriété des données sous-jacentes. Lorsque plus personne ne possède les données, la mémoire dynamique est automatiquement libérée. Les trois biggies ici sont des pointeurs de portée, des pointeurs partagés et des pointeurs faibles. Les pointeurs Scoped ont seulement un propriétaire, et quand ils sortent de la portée, ils sont supprimés [voir std::auto_ptr
en C++ 03 et std::unique_ptr
en C++ 0x]. Les pointeurs partagés peuvent avoir plusieurs propriétaires, et la mémoire n'est pas libérée tant que tous les propriétaires n'en ont pas fini avec eux. Les pointeurs faibles sont une forme de ceux-ci, mais ils ne maintiennent pas la propriété stricte à tout moment; ils demandent la propriété quand ils en ont besoin, et cette demande est refusée si le pointeur partagé correspondant n'a plus de propriétaires.
+1 pour les pointeurs vers les membres;) –
Les pointeurs vers les membres nécessitent une * instance *, pas une classe à déréférencer. –
Désolé, oui, vous avez raison. –
Vous pouvez également ajouter un autre niveau de pointeurs de catégorisation et trier en fonction de leur « constness »:
pointeur sur un const - Vous pouvez changer de pointeur, mais pas ce qu'il pointe.
Exemple:
int i = 42;
const int* pi = &i;
ou
int i = 42;
int const* pi = &i;
pointeur Const - Vous ne pouvez pas changer ce que les points de pointeur pour.
Exemple:
int i = 42;
int* const pi = &i;
pointeur Const à un const - Vous ne pouvez pas changer ce que les points de pointeur et vous ne pouvez pas changer le pointeur lui-même.
Exemple:
int i = 42;
const int* const pi = &i;
- 1. Deux pointeurs différentes informations stockées
- 2. Différentes méthodes de conversion de type. Quelle est la différence
- 3. modèle différent pour différentes catégories dans magento
- 4. Quelle est la meilleure méthode pour ouvrir de nombreuses classes différentes dans l'application?
- 5. C++: Tableau de pointeurs de fonctions membres vers différentes fonctions
- 6. Quelle est la bonne façon d'insérer des colonnes dans un vecteur 2D de pointeurs?
- 7. Quelle est la meilleure convention de déclarer des pointeurs en C++? MyClass * ptr (ou) MyClass * ptr?
- 8. Quelle est la différence?
- 9. Peut-on créer des vues différentes pour différentes catégories d'utilisateurs dans SharePoint?
- 10. Quelle est la différence?
- 11. L'utilisation de exclude sur la liste de catégories est annulée
- 12. Quelle est la meilleure façon de renvoyer des cellules différentes selon la position dans un UITableView
- 13. Quelle serait la meilleure façon de concevoir une base de données et des relations pour un site Web comme Yelp ou eBay (beaucoup de catégories et sous-catégories)?
- 14. Quelle est la part de marché pour les différentes versions de framework .Net?
- 15. Quelle est la bonne stratégie de version pour les différentes versions de .NET?
- 16. Quelle est la convention pour appeler overloaded = opérateur en C++ en utilisant des pointeurs?
- 17. MVC -DropDownList - Catégories - Sous-catégories
- 18. Comment déterminer quelle classe dérivée est pointée lors de l'utilisation d'un tableau de pointeurs
- 19. Dans quelle mesure les catégories Objective-C sont-elles sécurisées?
- 20. pointeurs de fonction requête
- 21. Configuration de TFS TeamBuild pour exécuter différentes catégories de test sur différents agents de build
- 22. Est-il possible d'étendre les catégories dans ExpressionEngine 2
- 23. pointeurs vers des pointeurs et des tableaux de pointeurs
- 24. GpsSatellite.getSnr() - Quelle est la plage de valeurs?
- 25. WordPress: Importation de plusieurs catégories?
- 26. Query catégories mulitple
- 27. Joomla - Catégories et sous-catégories calendrier
- 28. Quelle est la différence
- 29. Quelle est la différence?
- 30. Django Catégories avec sous-catégories et urls
pouvez-vous préciser? quelles catégories? pointeur sauvage n'est pas un terme standard. – Naveen
Le pointeur sauvage est un terme standard de facto, ce qui signifie une variable de pointeur non initialisée pointant vers un emplacement aléatoire. Pour d'autres termes similaires, demandez à Google. –
Jamais entendu parler d'un pointeur sauvage, et je fais cela depuis un moment. –