No.2ベストアンサー
- 回答日時:
>new演算子で確保したメモリの開放はできるんですよね?
newはインスタンスを新しく作るときは何でも使いますから、newを使っているかどうかというよりは、
そのときに作ったインスタンスの種類によって場合分けして考えたほうがいいです。
・構造体=値型のインスタンス=メモリにはそもそも入らない。スタックに入る。
・通常のクラスや配列=参照型のインスタンス=managedリソースのヒープに入る。参照が消えれば、ガベージになり、そのうちガベージコレクタ(GC)で掃除される。
・System.Drawing以下やSystem.IO以下にあるクラスはunmanagedリソースを使っている可能性が高い=明示的に解放しないと、ハンドルをつかんだままになるおそれがある
どれも、instantiateするときはnewを使いますから、newを使うかどうかでは識別できないと思います。
managedの場合は参照を消して、その後はガベージコレクタに任せるということですね。
以前C++をやっていたので、明示的に開放しないと不安です・・・
いろいろ誤解している私にいろいろ教えてくださりありがとうございました!
No.1
- 回答日時:
構造体は値型ですよね。
C# .NETの値型は、そもそも
「オブジェクトをヒープ(メモリ)に置く」ということをしないので、
(概念的には「値をとる」だけ。実際にはスタックに置かれる)
解放という概念もないと思いますが…
なお、Dispose()は意図的なリソース解放が必要、もしくは所望する場合に実装するもので、
managedリソースであれば、クラスオブジェクト(参照型)であってもそもそもDisposeは必須ではありません。
この回答への補足
ヒープとスタックについていろいろ調べました。
なるほど誤解してました。
構造体とクラスのオブジェクトにそんなちがいがあったとは知りませんでした。
そこで疑問がでてきたのですが
new演算子で確保したメモリの開放はできるんですよね?
できるのでしたらやり方も教えてください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 文の構造について 6 2022/10/15 21:37
- C言語・C++・C# C言語 2 2022/07/21 00:02
- その他(ニュース・社会制度・災害) 内閣府目標 人が身体、脳、空間、時間の制約から解放された社会を実現って・・出来るのでしょうか? 1 2022/08/13 23:43
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- 日本語 日本語のアクセント 1 2022/05/12 13:26
- 化学 構造式とは(ジエチルエーテル) 3 2022/11/24 11:11
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- ラジオ 「小さな小さな物語」の放送開始時期、西暦何年か? 2 2023/07/30 09:53
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
C#で構造体の配列を持った構造体を使いたいのですが
C言語・C++・C#
-
C#のメモリ解放についてご教授ください。 以下の例のAAAクラスで、CCCクラスのListを破棄およ
C言語・C++・C#
-
C# インスタンスの破棄
その他(プログラミング・Web制作)
-
-
4
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
5
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
6
C#でstringをポインタとして渡す
C言語・C++・C#
-
7
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数の変数を宣言する時、同時...
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
SQLを連続発行する時の正しい(?...
-
フォームの存在をチェックする方法
-
newしないインスタンス?実体化...
-
変数の参照でエラーが出てしま...
-
生成したインスタンスを削除す...
-
文字列を日付に変換でParseExce...
-
C#において、同じインスタンス...
-
C#でオブジェクトの有無を取得する
-
VC#での24ビットbmp形式での保...
-
Eclipse3でVisualEditorが起動...
-
インスタンスのハンドル
-
C# 外部のDLLの名前空間取得方...
-
javaのクラスの作り方、エラー...
-
他のファイルの変数参照
-
(C++) for文内でのインスタンス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
SQLを連続発行する時の正しい(?...
-
文字列を日付に変換でParseExce...
-
変数の参照でエラーが出てしま...
-
エクセル(複数インスタンス)...
-
フォームの存在をチェックする方法
-
VB6.0で、DLLを動的に参照したい
-
String a = "a"; と String b =...
-
C#「オブジェクト参照が必要で...
-
newしないインスタンス?実体化...
-
「インスタンス」の意味をわか...
-
SetWindowsHookExで質問
-
フィールドでのnewとコンストラ...
おすすめ情報