C ++では、関数は、関数のスコープを終了するときに動的に割り当てられたメモリをどのように処理しますか?このメモリはクリアされていますか、それともメインブロックに戻すことができますか?
コンテキスト:関数があり、配列として機能するdoubleへのポインターを渡します。このメモリを関数内に動的に割り当て、要素を初期化して関数を終了します。
void my_func(double* ptr){
ptr = new double[2];
ptr[0] = 15; ptr[1] = 10;
}
次に、メインブロックで、新しく割り当てられた配列を使用します。
int main(){
double* ptr;
my_func(ptr);
cout << ptr[0] + ptr[1] << endl;
delete[] ptr;
return 0;
これは機能しますか?このアプローチに関連する危険/落とし穴はありますか?