我編寫了一個非常簡單的編譯器,它將我的源語言翻譯爲字節碼,該代碼由VM處理(作爲簡單的堆棧機器,因此3 + 3將獲得翻譯成編譯器:如何實現引用計數(在一個簡單的VM中)
push 3
push 3
add
現在我在垃圾收集(我想使用引用計數)。 我知道它的基本概念,如果參照被分配,該對象的引用計數器加一掙扎,如果它離開範圍,它會減少,但不清楚的東西是GC如何釋放傳遞給函數的對象...
這裏我的意思
string a = "im a string" //ok, assignment, refcount + 1 at declare time and - 1 when it leaves scope
print(new Object()) //how is a parameter solved? is the reference incremented before calling the function?
string b = "a" + "b" + "c" //dont know how to solve this, because 2 strings get pushed, then concanated, then the last gets pushed and concanated again, but should the push operation increase the ref count too or what, and where to decrease them then?
一些更具體的例子,我會很高興,如果有人可以給我教程的鏈接實現引用計數或幫我這個非常具體的問題,如果有人收到這個問題(我問題是,我不明白何時增加,刪除參考或計數存儲在哪裏)