通常,函數中聲明的局部變量在堆棧上分配,而不是在堆上分配,但如果變量是靜態的,則不是這種情況。爲什麼不能在堆棧上分配一個靜態類變量 ?爲什麼不能將靜態類變量分配給堆棧?
0
A
回答
1
本地靜態變量的生命週期是整個程序,但堆棧被所有函數使用,重用並在多個函數調用中再次使用。因此,靜態本地變量不能與其他局部變量一起存儲在堆棧中。
3
因爲它不會是靜態的。你的問題體現了矛盾。
2
堆棧中分配的變量會自動刪除。你不想要一個靜態變量被刪除。
相關問題
- 1. 爲堆棧上的靜態變量分配空間
- 2. 將靜態變量分配給非靜態變量
- 3. 爲什麼分配給靜態變量的sqlliteconnection被處置?
- 4. 爲什麼我不能將父類分配給子類類型的變量?
- 5. 爲什麼我不能將循環分配給變量?
- 6. 爲什麼我不能將Scala對象分配給Java變量?
- 7. 爲什麼我不能將location.hash分配給一個變量?
- 8. 爲什麼我們不能將常量變量定義爲靜態變量?
- 9. 靜態,堆棧和堆分配如何不同?
- 10. 爲什麼靜態變量檢查爲零然後分配?
- 11. 爲什麼靜態類不能有非靜態方法和變量?
- 12. 將變量分配給null做什麼?
- 13. 爲什麼這個分配堆棧而不是堆?
- 14. 爲什麼靜態變量不好?
- 15. 爲什麼類中的靜態變量給出鏈接錯誤?
- 16. 如何將字符串分配給可變靜態變量?
- 17. 爲什麼我不能將TextLength分配給Long值類型?
- 18. 爲什麼Pagingnation類的變量不能分配?
- 19. 爲什麼我不能在子類中分配變量?
- 20. 爲什麼堆棧不能回滾
- 21. 爲什麼setjmp不能保存堆棧?
- 22. 將堆棧的值分配給另一個堆棧
- 23. 爲什麼本地變量不改變堆棧指針?
- 24. 爲什麼不能將函數的調用成員分配給變量
- 25. 爲什麼我不能將一個wordpress函數分配給一個變量?
- 26. 動態堆棧分配
- 27. 動態分配stdlib堆棧?
- 28. 什麼變量批量分配給Stdout?
- 29. 靜態,堆棧和堆內存分配的地址排序?
- 30. 什麼類型的變量不能是靜態的?
在這個問題中,以及在一些提供的答案中使用術語「堆棧」,如果不是推定的話,是有趣的。該標準定義了您所稱的「自動」變量或自動存儲。實際上,標準中「堆棧」的唯一用法是''標準庫容器和對異常條件和析構函數觸發函數調用行爲的引用,稱爲「堆棧展開」(15.2)。老實說,對於你的問題或答案來說,這不是一個正確的術語。 –
WhozCraig
@WhozCraig在我自己的答案中,我沒有使用'堆棧'這個詞,但我不在乎這個評論的光顧口氣,並且作爲一個編譯器編寫者說我發現內容僅僅是一個狡辯。 – EJP
@EJP這不是爲了你的照顧,而不是批准。這意味着要明白,每個標準的自動存儲概念並沒有歸結爲「堆棧」的所有常見假設。它完全實現了它,並且作爲23年來更好的編譯器工程師,我參加了幾個*不使用傳統模型的實現。你當然可以自由地認爲它僅僅是一個狡辯,但我自己和標準委員會都不這麼認爲,我們都有資格接受我們的意見。 (和你的答案+1,既簡短又不可爭辯)。 – WhozCraig