ネイティブスタックタイプを持たないあいまいな言語を使用しているので、独自の言語を実装しました。今、ネットで読んで、私はこれを行うためのいくつかの異なるアプローチを見つけました。
これは私の実装です(疑似コード)
//push method
function Push(int)
{
Increase (realloc) stack by 4 bytes;
Push int into the new memory area;
}
//pop method
function Pop()
{
collect int from the top of the stack;
reallocate (realloc) the stack to shrink it by 4 bytes;
return int;
}
値をポップした後にrealloc()呼び出しを使用してスタックのサイズを変更すると、パフォーマンスが低下すると言う人もいるので、いくつか質問があります。
- mallocを使用してスタックを拡張し、プログラムの最後に解放するのが最善ですか?
- スタックのサイズを変更(プッシュ)するには、4バイト以上増やすのが最適ですか?
- いっぱいになったときに割り当てられたメモリを2倍にして、スタックを増やすのがベストプラクティスですか?
- 上記のコードについてどう思いますか?