SORU
29 EKİM 2008, ÇARŞAMBA


Bir C işlevi içinde statik bir değişken ömrü nedir?

Eğer bir değişkeni bir fonksiyon kapsam static olarak ilan edilirse sadece bir kez başlatılır ve işlev çağrıları arasında değerini korur. Tam olarak yaşam süresi nedir? Ne zaman yapıcı ve yıkıcı adlı alabilirim?

void foo() 
{ 
    static string plonk = "When will I die?";
}

why I asked the question if I already knew the answer? bilmek isteyenler İçin S. S.

CEVAP
29 EKİM 2008, ÇARŞAMBA


Motti emri konusunda haklı, ama göz önünde bulundurulması gereken başka şeyler var:

Derleyiciler genellikle gizli bir bayrak değişkeni eğer yerel statiği zaten başlatıldı olmadığını göstermek için kullanın ve bu bayrak işlevi için her girişi kontrol edilir. Belli ki bu bir performans isabet, ama bir endişe dahası bu bayrak, güvenli iş parçacığı olması garanti değildir.

Eğer yerel bir statik varsa yukarıdaki gibi, ve 'foo' birden çok iş parçacığı denir, yarış koşulları neden 'güm' yanlış başlatılmasını hatta birden fazla kere. olabilir Ayrıca, bu durumda 'güm' inşa edilmiş olan farklı bir iş parçacığı tarafından tahrip olabilir.

Rağmen ne standart söylüyor isterim çok dikkatli gerçek amacıyla yerel statik imha, çünkü bu mümkün olabilir farkında olmadan güvenmek statik bir varlık hala geçerli sonra tahrip edilmiş, ve bu gerçekten zor izleyebilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Glyn Dewis

    Glyn Dewis

    25 AĞUSTOS 2007
  • hytchme

    hytchme

    9 Mart 2014
  • lilstevie89

    lilstevie89

    25 Mart 2011