現在c++を勉強しているものです。
メモリの解放についてわからないことがあるので質問させてください。
・以下のようなコードを書いたのですが、デストラクタにてptrをdeleteしようとするときにクラッシュします。
main()にてaをdeleteすれば、class A のptrが占有しているメモリも同時に解放されているということでしょうか?
また仮にほかにメンバ変数がclass A 内にあったとして(int やfloat)、それらに割り当てられているメモリもすべて個別にdeleteする必要があるのでしょうか?それともそれらはインスタンスが解放されたら自動で解放されるのでしょうか?
・newを使わずにクラスのインスタンスを生成したとき(A a = {10} みたいな)、スコープを抜けるとこのインスタンスが確保しているメモリは自動で解放されるのでしょうか?それともdeleteを呼ぶ必要があるのでしょうか?
c++のバージョンは17です。
初歩な質問ですみませんがご回答頂けますと幸いです。
よろしくお願いいたします。
#include <iostream> class A { float* ptr; public: A(float input) { float value = input; ptr = &value; }; ~A() { delete ptr; } }; int main() { A* a = new A(5); delete a; }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。