2009-07-28 22 views

cevap

7

Statik değişken, DLL dosyasının .BSS veya .DATA bölümünde sonlanacak. DLL'ye bağlanan yürütülebilir dosya muhtemelen varlığını bile bilmez. EXE, DLL yüklediğinde, sistem bunun için DLL'in veri bölümlerini ayarlar ve sonra DllMain() çağırır. Bu DLL'lerin statiği ortaya çıktığında ve başlatıldığında.

+0

Yani, eğer sizi doğru anlıyorsam, bu paylaşılan kitaplığa birden çok işlem bağlanırsa, değişken farklı işlemler tarafından çağrılar arasında 'statik' davranır? – nagul

+2

Hayır, etkin bir şekilde yeni bir DLL örneği, kendisine bağlanan her işlem için yüklenir, bu nedenle veri segmentleri işlemler arasında paylaşılmaz. –

+0

Anlaşıldı. DLL kendi bellek bölümlerini alır ve statik değişken oraya gider. – nagul

1

Evet. statik değişkenler farklı tür arasındaki farklar:

  • kapsamı

  • dinamik başlatılır olanlar için başlatma zamanı.

Uygulama (ve BSS ve DATA bölümleri uygulama ayrıntıları notu) genellikle aynıdır. Dinamik olarak başlatılan statik işlev değişkenlerinin doğru başlatılmasını sağlamak için, bir yol, dinamik başlatmanın gerekli olduğunu belirten ek bir boole eklemektir.

İlgili konular