Sur un système 64 bits, sizeof(unsigned long) dépend du modèle de données implémenté par le système. Par exemple, il s’agit de 4 octets sur LLP64 (Windows), 8 octets sur LP64 (Linux, etc.). Qu’est-ce que sizeof(size_t) censé être? Cela varie-t-il avec le modèle de données comme sizeof(long) ? Si c’est le cas, comment? Références: Modèles de […]
Dans CI, vous voyez beaucoup de code qui ajoute ou atsortingbue un littéral entier à une variable size_t . size_t foo = 1; foo += 1; Quelle conversion a lieu ici, et peut-il arriver qu’un size_t soit “mis à niveau” vers un int puis reconverti en un size_t ? Est-ce que ça restrait quand même […]
Je souhaite allouer un tableau de caractères de 2,9 Go avec database = (char*) malloc((2900 * 1000000 * sizeof(char))); Cela donne un avertissement de dépassement d’entier et le malloc renvoie NULL . Le paramètre malloc est du type size_t qui, selon la documentation, est du type unsigned int . Donc, le maximum devrait être UINT_MAX […]
Objective-C Runtime fournit la fonction class_addIvar C : BOOL class_addIvar(Class cls, const char *name, size_t size, uint8_t alignment, const char *types) Que dois-je mettre pour la size et l’ alignment ? UITextPosition * une variable d’instance de type UITextPosition * , mais aucun object UITextPosition n’est dans la scope. Pour la size , puis-je simplement […]
Quel type en C doit être utilisé pour représenter la différence entre les tailles de deux objects? Comme size_t n’est pas signé, quelque chose comme size_t diff = sizeof (small_struct) – sizeof (big_struct); évidemment ne serait pas correct et il me semble qu’il n’y a pas de véritable équivalent signé. ptrdiff_t semble tentant, mais comme […]
Je sais que dans C type d’opérateur sizeof est size_t type entier non signé étant défini dans . Ce qui signifie que sa taille maximale doit être 65535 comme indiqué dans la norme C99 7.18.3 : limit of size_t SIZE_MAX 65535 Cependant, dans le fichier d’en gcc-4.8.2 tête gcc-4.8.2 , stdint.h a défini une taille […]
Je veux append un type size_t à un pointeur. Certains aiment ça: void function(size_t sizeA,size_t sizeB){ void *pointer; pointer=malloc(sizeA); pointer=pointer+sizeB; } Dans le cas hipothetic que cela ne se terminera pas par un segfault, la question est: puis-je faire cela? Ajouter un type size_t à un pointeur? Et l’adresse résultante sera dans l’adresse ‘taille’?
J’ai besoin d’obtenir une taille de tableau à partir d’une entrée utilisateur. Il m’a semblé naturel de stocker l’entrée en tant que size_t , mais en recherchant une fonction strto…() appropriée strto…() , je n’en ai trouvé aucune. Je viens d’utiliser strtoull() , puisque unsigned long long est garanti d’être d’au moins 64 bits et […]
Certaines bibliothèques système telles que malloc strlen veulent ou retournent size_t en tant que paramètre. Quel est le bon choix dans LLVM IR pour interagir avec ces fonctions? La sélection est-elle la tâche du compilateur? Est-ce que LLVM IR a un type size_t?
Tout d’abord, que veux-je dire par «définition correcte»? Par exemple, K & R dans “C Programming Language” 2nd ed. , dans la section 2.2 Types et tailles de données , énoncez très clairement les entiers: Il existe short types short , int et long pour les types entiers. Ils sont nécessaires pour représenter les valeurs […]