CUDAとBarnes-Hutアルゴリズムに関するビデオを見ていましたが、GPUのツリーに深度制限を設ける必要があると言われていました。ヒープ内で再帰を行います。メモリ割り当てを伴う再帰
基本的に、私はヒープからメモリを割り当てて、スタックオーバーフローをやや遅らせるために再帰関数の関数呼び出しを配置する一時的な "スタック"としてメモリを割り当てることは可能ですか?
もしそうなら、どのように実装することができますか?私たちは関数へのポインタのためのスペースを割り当てますか?私はそれがヒープに関数のアドレスを格納する必要があると思うが、私はあまり確かではない。
[編集]これは純粋に理論上の質問であり、これを行うとプログラムがヒープを使用して一度減速することになると思います。要求ごととして
[編集]、私が使用していますコンパイラは、Ubuntuの14.04(64ビット)
Cはこのようなメカニズムを定義していません。実際には、これらの名前や他の名前の下で「スタック」や「ヒープ」を定義することはありません。それらはほとんどの*実装の側面の標準的な名前ですが、Cの範囲外です。つまり、役に立つ答えを得るためには、特定の実装を指定する必要があります。一方、それはまた、C自体があなたが何を記述することを禁じていないことを意味します。 3番目の手で、私はそれを提供する実装を認識していません。 –
@JohnBollinger申し訳ありませんが、特定の実装を指定する必要があると言ったときに、意味が分かりません。言語自体がどのようにメモリを扱うのかを意味しますか?私はこれまでにいくつかの入門コースしか取っておらず、Cコンパイラ(と私はほとんどのコンパイラが推測する)がメモリをどのように管理するかの基本以外のこの側面には入らない。 – Plopperzz
「特定の実装を指定する」とは、質問の範囲をLinuxのGCC 5/glibcやWindows 10のMS Visual C++ 2013に絞り込むことです。 –