Quelle est la limite sur malloc paramètre de type size_t en C? Docs disent que c'est une limite de UINT_MAX mais je ne peux pas aller au-delà de INT_MAX

Je veux allouer un 2.9 GO char tableau avec

  database = (char*) malloc((2900 * 1000000 * sizeof(char)));

Cela donne un débordement d'entier avertissement et le malloc retourne NULL. L'
malloc paramètre est de type size_t qui, selon la documentation est de type
unsigned int.

Donc le max doit être UINT_MAX qui est au moins de 2.9 GO. Toutefois, si
J'essaie d'allouer plus de MAX_INT la malloc échoue. Est-ce à dire
size_t sur mon système est de type int? Comment puis-je le vérifier? J'ai regardé à travers

/usr/include/stdlib.h 

et

./lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h 

mais
ne pouvez pas trouver la définition de size_t. Merci beaucoup

Cela signifie que vous n'avez pas assez de RAM 🙂
J'ai oublié de mentionner que j'ai 12 go de RAM sur l'ordinateur.
Vous avez aussi oublié de mentionner que votre système est en 32 bits.

OriginalL'auteur Roshan | 2012-03-02