[問題] 為什麼static 的變數不會被初始化
想問個小問題
在某一個版本之後
關於singleton的寫法推薦如下
QByteArray& AlbumItem::placeholderBytes(){
static QByteArray bytes;
if (bytes.isNull()){
//....................
}
}
return bytes;
}
後來我想改用指標
QByteArray* AlbumItem::placeholderBytes(){
static QByteArray *bytes = nullptr;
if (bytes == nullptr){
//........................
}
}
return bytes;
}
本來我擔心已經存在記憶體裡的*bytes會被初始化為nullptr
造成非singleton的情況
並且導致有記憶體洩漏
還好測試一下並沒有這樣的情況發生
想請問是否是因為他檢查如果該static 變數已存在於記憶體
就會跳過宣告這行程式碼嗎?
還是說實際上有其他動作,只是剛好結果符合我想要的呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.20.237 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1742911880.A.516.html
※ 編輯: liu2007 (123.194.20.237 臺灣), 03/25/2025 22:11:47
→
03/25 22:21,
1周前
, 1F
03/25 22:21, 1F
→
03/25 22:21,
1周前
, 2F
03/25 22:21, 2F
→
03/25 22:21,
1周前
, 3F
03/25 22:21, 3F
→
03/25 22:22,
1周前
, 4F
03/25 22:22, 4F
推
03/26 08:52,
1周前
, 5F
03/26 08:52, 5F
→
03/26 08:52,
1周前
, 6F
03/26 08:52, 6F
推
03/26 09:03,
1周前
, 7F
03/26 09:03, 7F
→
03/26 09:03,
1周前
, 8F
03/26 09:03, 8F
→
03/26 10:07,
1周前
, 9F
03/26 10:07, 9F
→
03/26 10:07,
1周前
, 10F
03/26 10:07, 10F
推
03/26 16:01,
1周前
, 11F
03/26 16:01, 11F
→
03/26 16:01,
1周前
, 12F
03/26 16:01, 12F
→
03/26 16:01,
1周前
, 13F
03/26 16:01, 13F
推
03/26 19:00,
1周前
, 14F
03/26 19:00, 14F
→
03/26 19:00,
1周前
, 15F
03/26 19:00, 15F
→
03/26 19:00,
1周前
, 16F
03/26 19:00, 16F
推
03/27 00:49,
6天前
, 17F
03/27 00:49, 17F
→
03/27 00:49,
6天前
, 18F
03/27 00:49, 18F
→
03/27 00:50,
6天前
, 19F
03/27 00:50, 19F
→
03/27 00:51,
6天前
, 20F
03/27 00:51, 20F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章