2011-07-14 3 views
3

quelqu'un peut-il m'expliquer quel est l'avantage des petits types de données comme char (8 bits) ou short (16 bits) par rapport à int (32 bits) (en particulier en C/C++).Avantage de petits types de données

Dans mon esprit cela n'apporte aucun avantage esp. sur une machine 32 bits, en raison de la taille de son mot est toujours 32 bits. Est-ce une chose compilateur, que dans certains cas, certains petits types peuvent être combinés dans un seul registre, pour économiser de la mémoire? Les petits types de données sont-ils uniquement destinés aux architectures matérielles inférieures à 32 bits ou/et avec peu de mémoire?

supplémentaires Je vois une nouvelle cible pour les échecs par débordement du type de données, donc je hink il ne doit pas être utilisé à la légère ...

Répondre

2

Même si la machine a une taille de mot de 32 bits, ne signifie que tous les types de données sont stockés dans les limites de mots, ou même que l'unité minimale de stockage d'informations est le mot. Dites que vous devez créer un vecteur de mille caractères. Si vous le créez comme ceci:

std::vector<char> v(1000); 

il utilisera environ un millier d'octets (habituellement). Si vous supposez que l'unité de stockage minimale est le mot, vous pouvez le déclarer au lieu comme celui-ci (en pensant que de toute façon chaque ombles utilisera un 32 mot de bits):

std::vector<int> v(1000); 

mais cela vous donnera environ 4 octets * 1000 , soit quatre fois la déclaration précédente. C'est-à-dire, parfois, et selon la façon dont vous déclarez vos types, ils sont emballés, donc ils n'utilisent pas de mot pour stocker chaque information. Dans le premier cas, le compilateur/implémentation de vector<char> créera un tampon de 1000 octets pour stocker tous les caractères chargés. Donc, la réponse serait que l'avantage est d'économiser de l'espace mémoire.

+0

merci pour votre réponse! – Dudero

+0

vous êtes les bienvenus. –