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

  • discokatze

    discokatze

    23 EYLÜL 2009
  • GOTO Conferences

    GOTO Confere

    3 EKİM 2011
  • thelonelyisland

    thelonelyisl

    23 Aralık 2005