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
可能是您想要的更好的选择,然后在此示例中使用 new
或 delete
。
话虽如此,您 return new
-ed 指针并将结果存储为 float *weightoutput
。要释放内存,您应该在通过 delete [] weightoutput;
.
完成后调用 delete
我写了一个代码来将千克转换为磅和英石。下面显示了一个片段。
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
可能是您想要的更好的选择,然后在此示例中使用 new
或 delete
。
话虽如此,您 return new
-ed 指针并将结果存储为 float *weightoutput
。要释放内存,您应该在通过 delete [] weightoutput;
.
delete