私は主に学習目的で、Cで書かれた単純なスタックマシンに取り組んでいます。メモリ操作に使用malloc/free
した後、最新の仮想マシンからメモリ割り当て固有のコードを読み取ることをお勧めします。
Luaのソースコードをダウンロードして読み始めました。しばらくすると、マクロがたくさん含まれていることに気付き、実際のメモリ割り当てが行われるコード(つまり、malloc
呼び出し)が見つかりませんでした。
find . -exec grep -i "malloc" '{}' \; -print
malloc
名前に単語が含まれている一部のLuaマクロのみを出力しました。Lua VM(およびプログラミング言語)はまったく使用malloc
しません!
それで、これは私に質問につながります:現代のVMはどのようにメモリ割り当てを処理しますか?Luaはどのようにヒープからメモリを割り当てますか?割り当て以外の方法はありますmalloc
か?他の方法の長所/短所は何ですか?
また、割り当てられたメモリを安全に処理するためのベストプラクティス、デザインパターンなどについても疑問に思っています。Luaのソースでは、メモリを割り当てる前に多くの間接参照があることがわかります。このことについてどこで学ぶことができますか?