私はキロをポンドとストーンに変換するコードを書いた。スニペットを以下に示します。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;
}
を使用し、私はあなたが「新しい」を使用している場合、あなたは私が持っているmemory.Theの質問を解放するために「削除」するために使用する必要があること、複数の記事で読んだことがどのようにできた、ありますこの設定でstones_poundsを削除します。 stones_poundsは関数内の最後の行まで使用されるため、関数内でdelete [] stones_poundsを使用することはできません。グローバル変数ではないので、main関数内でもそれを削除することはできません。ですから、delete []演算子を使ってメモリを解放するにはどうしたらいいですか? delete []演算子を容易にするコードの構造を変更する唯一の代替方法はありますか?
なぜ 'std :: vector'や' std :: array'を使わないのですか?編集:この場合、実際にはおそらくより明確になる 'std :: pair'を返すことができます –
RyanP
[配列の返り値について](http://stackoverflow.com/questions/27410943/returning)を参照してください。 -a-function-in-cからの-arrays) Cスタイルの配列をリターンで使用することはできますが、 'new []'を(structを使って)まったく使用する必要はありません。 – PaulMcKenzie
地獄、なぜ単に 'struct'を返さないのですか? – Donnie