1
我對這個問題有疑問,而不是相對於特定的語言:當我編寫一個類,也許在C++或Java中,成員函數代碼的內存分配一次或在每個實例? 因此,在某些情況下,將它們編寫爲靜態會更好嗎?一次或每次實例化對象時,都會分配類成員函數代碼內存嗎?
感謝答覆
我對這個問題有疑問,而不是相對於特定的語言:當我編寫一個類,也許在C++或Java中,成員函數代碼的內存分配一次或在每個實例? 因此,在某些情況下,將它們編寫爲靜態會更好嗎?一次或每次實例化對象時,都會分配類成員函數代碼內存嗎?
感謝答覆
不,代碼的數據部分被單獨地從可執行部分當OS加載程序到存儲器中加載。它們通常駐留在不同的內存區域中(通常,可執行部分是隻讀部分)。
因此,當一個方法被調用時,基本上跳轉到可執行部分,在堆棧上有不同的上下文。
您可以檢查接頭這個優秀的文章: http://www.lurklurk.org/linkers/linkers.html
你會明白一個程序是如何加載到內存中,並執行。
thx回覆 – Exor 2011-04-24 11:51:55
不客氣:) – Macmade 2011-04-24 11:54:15