double *p; // 未初始化
cout << &p << endl; // 輸出指針自身地址
// 運行時報錯:Run-Time Check Failure #3 - The variable 'p' is being used without being initialized.
Visual Studio (MSVC) 啟用 **Run-Time Checks (/RTC1, /RTCs, /RTCu)** 時,會在運行時檢測未初始化變量的讀取行為。雖然代碼只輸出指針變量 `p` 自身的地址 (`&p`),但調試版運行庫仍會標記該變量為「未初始化」,因為其值(指向的地址)是不確定的,屬於未定義行為風險。
double *p = nullptr; // C++11
// 或
double *p = NULL; // C++98
// 或分配內存
double *p = new double; // 需配套 delete
C++ 標準規定:讀取未初始化的非類類型自動存儲期變量導致**未定義行為** (UB)。現代編譯器通過儀器化檢測此類 UB,保護開發者免受隨機崩潰、數據竊取等安全風險。