Je vois les variables définies avec ce type mais je ne sais pas d'où il vient, ni quel est son but. Pourquoi ne pas utiliser des int ou unsigned int? (Quels sont les autres "semblables"? Void_t, etc).
Réponses
Trop de publicités?À Partir De Wikipedia
L'
stdlib.h
etstddef.h
fichiers d'en-tête de définir un type de données appelésize_t
1 qui est utilisé pour représenter la taille d'un objet. Bibliothèque de fonctions qui prennent des tailles s'attendre à être de typesize_t
, et l'opérateur sizeof renvoie la valeursize_t
.Le type réel de l'
size_t
est dépend de la plateforme; une erreur commune est de supposersize_t
est le même que unsigned int, ce qui peut conduire à des erreurs de programmation,[2] en particulier que les architectures 64 bits deviennent de plus en plus répandus.
Selon size_t description sur en.cppreference.com size_t
est défini dans les en-têtes suivants :
std::size_t
...
Defined in header <cstddef>
Defined in header <cstdio>
Defined in header <cstring>
Defined in header <ctime>
Defined in header <cwchar>
size_t
est du type entier non signé du résultat de l'opérateur sizeof (ISO C99 Section 7.17.)
L' sizeof
opérateur rendements de la taille (en octets) de son opérande, qui peut être un
l'expression ou la mise entre parenthèses du nom d'un type. La taille est déterminée par le type de
l'opérande. Le résultat est un entier. La valeur du résultat est la mise en œuvre définis, et
son type (unsigned integer) size_t
(ISO C99 Section 6.5.3.4.)
Pratiquement parlant, size_t
représente le nombre d'octets que vous pouvez aborder. Sur la plupart des architectures modernes pour les 10 à 15 dernières années a été de 32 bits, qui a également été de la taille d'un unsigned int. Cependant, nous nous dirigeons à l'adressage 64 bits alors que l' uint
aura plus de chances de rester en 32bits (c'est la taille n'est pas garanti dans la norme c++). Afin de rendre votre code qui dépend de la taille de la mémoire portable à travers les architectures, vous devez utiliser un size_t
. Par exemple des choses comme la taille des matrices devriez toujours utiliser size_t
'. Si vous regardez les conteneurs standard de l' ::size()
retourne toujours un size_t
.
A noter également, visual studio dispose d'une option de compilation qui permet de vérifier pour ces types d'erreurs appelé "Détecter 64 bits des Problèmes de Portabilité".
De cette façon, vous savez toujours quelle est la taille, parce qu'un type spécifique est dédié aux tailles. La question très propre montre qu'il peut être une question: est-il un int
ou unsigned int
? Aussi, quelle est l'ampleur (short
, int
, long
, etc.)?
Car il y a un type spécifique attribué, vous n'avez pas à vous soucier de la longueur ou de la signature de l'-ness.
La définition peut être trouvée dans la Référence C++ de la Bibliothèque, qui dit:
Type:
size_t
(Unsigned intégrale)En-tête:
<cstring>
size_t
correspond à l'intégrale type de données renvoyé par la langue de l'opérateursizeof
et est défini dans l'<cstring>
fichier d'en-tête (entre autres) comme un unsigned type intégral.En
<cstring>
, il est utilisé comme le type du paramètrenum
dans les fonctionsmemchr
,memcmp
,memcpy
,memmove
,memset
,strncat
,strncmp
,strncpy
etstrxfrm
, ce qui dans tous les cas, il est utilisé pour spécifier le nombre maximal d'octets ou de caractères que la fonction a pour incidence sur.Il est également utilisé comme type de retour pour
strcspn
,strlen
,strspn
etstrxfrm
de retour de tailles et de longueurs.