อายุการใช้งานของstaticตัวแปรฟังก์ชั่นเริ่มต้นในครั้งแรก[0]การไหลของโปรแกรมพบการประกาศและมันจะจบลงที่การยกเลิกโปรแกรม ซึ่งหมายความว่าเวลาทำงานต้องดำเนินการเก็บรักษาหนังสือบางอย่างเพื่อทำลายมันเฉพาะเมื่อมันถูกสร้างขึ้นจริง
นอกจากนี้เนื่องจากมาตรฐานบอกว่า destructors ของวัตถุคงที่จะต้องทำงานในลำดับย้อนกลับของการก่อสร้างของพวกเขา[1]และลำดับของการก่อสร้างอาจขึ้นอยู่กับโปรแกรมเฉพาะที่เรียกใช้คำสั่งของการก่อสร้างจะต้องนำมาพิจารณา .
ตัวอย่าง 
struct emitter {
    string str;
    emitter(const string& s) : str(s) { cout << "Created " << str << endl; }
    ~emitter() { cout << "Destroyed " << str << endl; }
};
void foo(bool skip_first) 
{
    if (!skip_first)
        static emitter a("in if");
    static emitter b("in foo");
}
int main(int argc, char*[])
{
    foo(argc != 2);
    if (argc == 3)
        foo(false);
}
เอาท์พุท:
  C:> sample.exe 
  สร้างใน foo 
  ถูกทำลายใน foo  
  
  C:> sample.exe 1 
  สร้างในถ้า
  สร้างใน foo 
  ถูกทำลายใน foo 
  ถูกทำลายในถ้า  
  
  C:> sample.exe 1 2 
  สร้างใน foo 
  สร้างในถ้า
  ถูกทำลายในถ้า
  ถูกทำลายใน foo  
[0]เนื่องจากC ++ 98 [2]ไม่มีการอ้างอิงถึงหลายเธรดว่าสิ่งนี้จะทำงานอย่างไรในสภาวะแวดล้อมแบบมัลติเธรดที่ไม่ได้ระบุและอาจเป็นปัญหาได้เมื่อRoddyกล่าวถึง
[1] C ++ 98ส่วน3.6.3.1 [basic.start.term]
[2]ใน C ++ 11 สถิตจะเริ่มต้นในวิธีที่ปลอดภัยหัวข้อนี้ยังเป็นที่รู้จักกันเมจิกสถิตยศาสตร์