我々は、これがTBBスレッドプールを初期化するために、次のTBBコードを使用して行われるいくつかの処理を実行するタスクを起動するためにTBBを利用するコードの一部を有するリーク(コアの数と一致する):TBBスポーンタスクメモリは
tbb::task_scheduler_init(8);
はその後、我々は、我々は(MainTaskがTBB :: Taskクラスから派生される)次のコードを使用産卵する各タスクのために:私たちは私たちのコードを実行すると
task = new (tbb::task::allocate_root()) MainTask(theAction, theOutputData);
tbb::task::enqueue(*task);
我々は、一定量を使用して始めます上述したように、プログラムが実行して新たなタスクを発生させると、メモリ時間の経過と共に使用量が徐々に増加します。実行40分で、12KBから213KBに増加します。これは私たちの処理コードの結果として挑戦的なことではなく、TBBが結果を期待しているように実行を完了したら作成しているTBB allocate_rootタスクからメモリを解放しないように思われます。
どうしてですか?この問題を解決するために何か他に必要なことはありますか、またはこの問題を解決するallocate_rootアプローチを使用せずにTBBタスクをスポーンする別の方法がありますか?