我正在查看朋友的代码,并就 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;
}
非常感谢任何帮助,这变成了一个非常有趣的问题,我的朋友们,我无法回答。