Quelle quantité de mémoire un pointeur C ++ utilise-t-il?
Je suis en train de faire (éventuellement mal) hypothèse qu'elle est mise en œuvre et/ou dépendante du système. Est-il quelque chose comme INT_MAX ou CHAR_BIT qui serait me dire la taille d'un pointeur en mémoire?
source d'informationauteur HorseloverFat
Vous devez vous connecter pour publier un commentaire.
Un pointeur de points d'une place en mémoire, de sorte qu'il serait de 32 bits sur un système 32 bits et 64 bits de 64 bits.
La taille du pointeur est également sans pertinence au type de il points, et peut être mesurée par
sizeof(anyType*)
UPD
La façon dont j'ai répondu ceci a été suggéré par la façon dont la question a été posée (ce qui suggère une réponse simple). Oui, je suis d'accord que dans des cas comme des pointeurs de méthode virtuelle de la table, la taille du pointeur de la souris sera différent, et selon cet articleil varie sur des plateformes différentes, et même sur des compilateurs différents au sein de la même plate-forme. Dans mon cas, par exemple (x64 ubuntu, GCC 4.6.3), elle est égale à 16 octets.
Serait
sizeof(int*)
travail? Ou ce que vous êtes censé vérifier?Il est certainement le système de charge. Généralement, un simple pointeur de données peuvent être stockées dans un size_t variable. En C++11, il est SIZE_MAX macro qui est la valeur maximale pour size_t. En C++11, vous pourriez aussi utiliser std::intptr_t.
Si vous prenez membre des pointeurs de fonction en considération que les choses deviennent encore plus compliquer. Il dépend, entre autres choses, si la classe hérite d'un ou plusieurs parents, s'il expose des fonctions virtuelles, et bien sûr sur la mise en œuvre.
Ici vous pouvez trouver un article détaillé sur les pointeurs de fonction, ainsi que quelques exemples pour quelques compilateurs.
La réponse pour un cas simple comme
int*
est simple et est donnée sur d'autres réponses.Mais gardez à l'esprit que les pointeurs membres des objets que l'utilisation de l'héritage multiple peut contenir plusieurs (Mots/Dword/QWORDs), dans le pire des cas jusqu'à 5 (cinq).
Bon article à ce sujet: http://www.codeproject.com/Articles/7150/Member-Function-Pointers-and-the-Fastest-Possible
Taille du Pointeur dépend de votre Système d'Exploitation (en fait le nombre de bits du Système d'Exploitation), essayez sizeof(type*) de la fonction.