Après avoir lu Are C# Strings (and other .NET API’s) limited to 2GB in size? j'ai joué avec de grandes chaînes et des tableaux dans .NET 3.5. J'ai trouvé que le plus grand tableau que je pouvais allouer était int.MaxValue - 56
octets. Une chose similaire pour les chaînes: le plus grand que j'ai pu obtenir était (int.MaxValue - 58)/2
caractères (puisque chaque personnage a pris 2 octets). Après cela, il lance OutOfMemoryException
.Pourquoi ne puis-je pas créer un objet de taille supérieure à 2 Go dans .NET, même sur x64?
Pourquoi cette limitation existe-t-elle? Pas que je l'ai jamais rencontré en pratique - je suis juste curieux de connaître le fonctionnement interne de .NET. Oui, c'était sur une machine 64-bit avec beaucoup de RAM, bien sûr - et oui, le processus était en cours d'exécution en 64-bit. (Je pourrais réellement allouer 3 tels tableaux ou chaînes pour une utilisation totale de la mémoire de 6 Go.)
Merci. Cela confirme qu'il s'agissait d'une décision de conception consciente, même si cela n'explique pas vraiment pourquoi ils ont pris cette décision. – EMP