SORU
19 EKİM 2008, Pazar


C max dizi uzunluk sınırı var mı ?

C bir dizi için maksimum uzunluk var mı ?

C sınırı yoksa benim makine mi bağlı? Tweakable? Dizinin yapılır türüne mi bağlıdır?

Bu sınırı bir şekilde kırabilir miyim veya bilgi depolamak için daha iyi yollar aramak zorunda mıyım? Ve en kolay yolu ne olmalıdır?

Ne yapmam gerektiğini bir dizi üzerinde uzun uzun int depolama, Linux ortamında çalışıyorum. Sorum şu: ben eğer N ^ N uzun uzun dizisi saklamak için ihtiyacım olursa ne yapmalıyım . 10 haneli?

Okul için bazı şifreleme algoritması örneğin p-Pollard gibi () yazıyorum, çünkü buna ihtiyacım var, ve tamsayılar bu duvar ve diziler temsil uzunlukta vurdu.

CEVAP
19 EKİM 2008, Pazar


Kimse boyutu sınırı bahsettiyığın çerçevesi.

Bellek ayrılmış iki yer vardır:

  • Yığın (dinamik olarak ayrılan bellek).
    Boyut sınırı burada mevcut donanımların bir kombinasyonudur ve OS yeteneğini diğer cihazları geçici olarak kullanılmayan veri depolamak için kullanarak uzay simülasyonu (yanisabit disk taşımak sayfalar).
  • Yığın (Yerel olarak bildirilen değişkenler).
    Boyut sınırı burada tanımlanmış derleyici (olası bir donanım sınırları ile). Eğer derleyici belgelerine okursanız genellikle bu boyutu değiştirebilirsiniz.

Böylece eğer dinamik (sınırı büyük ve diğer mesajlar tarafından ayrıntılı olarak tarif etti. bir dizi atarsanız

int* a1 = new int[SIZE];  // SIZE limited only by OS/Hardware

Alternatif olarak, eğer dizi yığında ayrılmış ise çerçeve yığın büyüklüğü ile sınırlıdır.N. B.vektörler ve diğer kaplar küçük bir varlık yığını var ama genellikle veri yığın yığın olacak.

int a2[SIZE]; // SIZE limited by COMPILER to the size of the stack frame

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MikeyMacintosh

    MikeyM

    28 Aralık 2009
  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008
  • Top10Series

    Top10Series

    26 Kasım 2008