私は友人のコードをレビューしていて、C/C++ がスタックにメモリを割り当て、そのリリースを管理する方法について興味深い議論に巻き込まれました。関数で 10 個のオブジェクトの配列を作成し、その配列を返す場合、関数がポップしたときにそれを解放しますか (したがって、指定されたデータが無効になります)、それともヒープに配置されますか (これは、どのように行うかという問題を引き起こします)。それを解放?)。
サンプルコードは次のとおりです。
Gene* GetTopTen()
{
// Create 10 genes (or 10 objects, doesn't matter)
Gene Ten[10];
// Sort out external pool data
Sort();
// Copy over data to the array of 10 objects
for(int i = 0; i < 10; Ten[i++] = pool[i]);
// Here is the core of my question:
return Ten;
}
どんな助けでも大歓迎です、これは私の友人と私が答えることができない非常に興味深い質問に変わりつつあります.