C++。何时删除 C 样式数组以释放内存

c++ . When to delete a C-style array to free memory

我写了一个代码来将千克转换为磅和英石。下面显示了一个片段。

float *weightoutput =  weight_conversion(weight);

功能如下。我使用了 C 风格的数组,

float* weight_conversion(float x){

float *stones_pounds = new float[2];  //C-style array 
float z, y;
z = x*0.15747304441776971; // (1 stone = 6.3503 kilo)
y = x*2.2026;              // (1 kilo = 2.2026 pounds)
stones_pounds[0] = z;
stones_pounds[1] = y;

return stones_pounds;
}     

我在多个帖子中读到,如果您使用 "new",您必须使用 "delete" 来释放 memory.The 我的问题是,我如何删除 stones_pounds 在此设置中。由于 stones_pounds 一直用到 return 函数中的最后一行,我认为我不能在函数中使用 delete [] stones_pounds 。因为它不是全局变量,所以我也不能在主函数中删除它。那么我该如何使用 delete[] 运算符来释放内存呢?唯一的选择是更改代码结构以方便 delete[] 运算符吗?

std::array 可能是您想要的更好的选择,然后在此示例中使用 newdelete

话虽如此,您 return new-ed 指针并将结果存储为 float *weightoutput。要释放内存,您应该在通过 delete [] weightoutput;.

完成后调用 delete