SORU
18 EYLÜL 2008, PERŞEMBE


Nerede statik değişkenler saklı (C/C )?

Ne kesimi (.SÜREKLİ spor modu, .Yürütülebilir bir dosya, VERİ, diğer statik değişkenler çarpışma isim yok ki saklı? Örneğin:


foo.c:                         bar.c:
static int foo = 1;            static int foo = 10;
void fooTest() {               void barTest() {
  static int bar = 2;            static int bar = 20;
  foo  ;                         foo  ;
  bar  ;                         bar  ;
  printf("%d,%d", foo, bar);     printf("%d, %d", foo, bar);
}                              }

Ben her iki dosya derleme ve fooTest çağıran bir ana bağlantı (eğer varsa) ve barTest tekrar tekrar, basit bir beşgen kullanmaktır artım bağımsız cümleler. Foo beri mantıklı ve bar değişkenleri çeviri birimine yerel.

Ama nereye depolama ayrılmış mı?

Açık olmak gerekirse, bu varsayım ELF formatında bir dosya çıktı bir zinciri var. Böylece, Beninanıyorumo oradavardırbazı uzay yürütülebilir ayrılmış olması bu statik değişkenler için dosya.< / ^ br . Tartışma amacıyla sağlar GCC araç zinciri kullanıyoruz varsayalım.

CEVAP
18 EYLÜL 2008, PERŞEMBE


Senin statik nereye olursa 0 başlatılmış olup olmadığı bağlıdır. 0 başlatılmış statik veri 0 veri başlatıldı .DATA gider sigara .BSS (Block Started by Symbol), Gider

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boniver

    boniver

    17 NİSAN 2006
  • Howcast

    Howcast

    4 EKİM 2007
  • Rhapsody

    Rhapsody

    7 ŞUBAT 2008