我寫了一個代碼將公斤轉換爲磅和石頭。一段代碼如下所示。C++。何時刪除一個C風格的數組以釋放內存
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;
}
我在多篇文章閱讀,如果你使用的「新」,你必須使用「刪除」來釋放內存。問題我已經是,怎麼可能我在這個設置中刪除了stones_pounds。由於stones_pounds被使用直到函數中的最後一行作爲回報,我不認爲我可以在函數中使用delete [] stones_pounds。既然它不是全局變量,我也不能在主函數中刪除它。那麼我該如何去使用delete []運算符來釋放內存呢?唯一的替代方法是更改代碼的結構以便於刪除[]運算符?
爲什麼不使用'std :: vector'或'std :: array'?編輯:在這種情況下,你實際上可能會返回一個'std :: pair'這可能會更清晰 –
RyanP
請參閱[這個問題在返回數組](http://stackoverflow.com/questions/27410943/return -arrays從 - 一個函數式-C)。您仍然可以在返回中使用C風格的數組,並且根本不需要使用'new []'(通過使用'struct')。 – PaulMcKenzie
哎呀,爲什麼不只是返回一個'struct'? – Donnie