![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら…
-
C#で構造体の配列を持った構造体を使いたいのですが
C言語・C++・C#
-
C#のメモリ解放についてご教授ください。 以下の例のAAAクラスで、CCCクラスのListを破棄およ
C言語・C++・C#
-
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
-
4
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
5
C# インスタンスの破棄
その他(プログラミング・Web制作)
-
6
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
複数の変数を宣言する時、同時...
-
変数名の付け方
-
C# インスタンスの破棄
-
VB.NET getとsetの概念がわかり...
-
オブジェクト参照がオブジェク...
-
「インスタンス」の意味をわか...
-
ASPX(C#)で別ファイルで自分で...
-
フォームの存在をチェックする方法
-
C#において、同じインスタンス...
-
javaのクラスの作り方、エラー...
-
生成したインスタンスを削除す...
-
SQLを連続発行する時の正しい(?...
-
フィールドでのnewとコンストラ...
-
C#「オブジェクト参照が必要で...
-
Servletにおけるスレッド間での...
-
エクセル(複数インスタンス)...
-
Delphiでインスタンスが作成さ...
-
[Visual C#] 優先される処理に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
次の日本語の意味を教えて下さい
-
複数の変数を宣言する時、同時...
-
C# インスタンスの破棄
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
オブジェクト参照がオブジェク...
-
変数の参照でエラーが出てしま...
-
「インスタンス」の意味をわか...
-
文字列を日付に変換でParseExce...
-
フォームの存在をチェックする方法
-
SQLを連続発行する時の正しい(?...
-
エクセル(複数インスタンス)...
-
C#の構造体の開放のしかた
-
newしないインスタンス?実体化...
-
他のファイルの変数参照
-
javaのクラスの作り方、エラー...
おすすめ情報