[過去ログ] 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
879
(3): デフォルトの名無しさん [sage] 2018/06/14(木) 15:24:59 ID:BKSAN5oR(2/3) AAS
>>878
878(1): デフォルトの名無しさん [sage] 2018/06/14(木) 14:30:10 ID:Lgo9GPo1(1) AAS
>>877
IDisposable使ってる?
スコープ抜けてもGCによって回収されるタイミングは保証できない
どうしてもすぐにGCしたいなら

GC.Collect();

をする。

多分ジェネレーション0だろうから

GC.Collect(0);

でいいのでは
レスをござます。
作ってるクラスがIDisposableを継承しないとダメってことですか?
作ってるのはインスタンス作らなくてもいいstaticクラスなんですけど。

GCは効果の程を確認できないですが、やってみます。
880: デフォルトの名無しさん [sage] 2018/06/14(木) 15:25:54 ID:BKSAN5oR(3/3) AAS
>>879
レスありがとうございます。です。
881: デフォルトの名無しさん [sage] 2018/06/14(木) 16:42:09 ID:79UoYXtL(1) AAS
>>879
外部リンク:qiita.com
こんなのとか

staticクラスだとファイナライザーを書けないから内部で他のクラスをnewした場合が問題
それとメンバ変数もstaticでなければならない
となると普通はアプリケーションが破棄されるまで残る

IDisposableをstaticクラスが継承するとエラーになる
というかstaticクラスはインターフェイスを継承できない
むしろusingを使えない理由が分からない

外部リンク[html]:ufcpp.net

こういうのだとstaticクラス風にファイナライザーを走らせられる

それかStreamみたいのでClose()したいのならClose()メソッドを書けばいい
SqlConnectionやDataSetはいちいちClose()する必要があるのかな?
883
(1): デフォルトの名無しさん [sage] 2018/06/15(金) 09:10:59 ID:8YDR1CpT(1) AAS
>>879 です。
VS2013 c++のCLRコンソールアプリを新規作成したやつです。

include "stdafx.h"

using namespace System;
using namespace System::Data;
using namespace System::Data::SqlClient;

int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");

String ^constr = "xxxxx";
SqlConnection ^connection = gcnew SqlConnection(constr);

connection->Open();

connection->Close();
connection->Dispose();

return 0;
}
この Disposeでエラーになります。
ここには書いてませんがDataSetも
Disposeでエラーになります。

上記コードの場合 Dispose抜きで問題ないのでしょうか?

>>882
882(2): デフォルトの名無しさん [sage] 2018/06/14(木) 22:51:20 ID:khTKmU6v(1) AAS
>>877
ここの記述を信じるなら、全部Yesってことになるのかな。
外部リンク[modf]:mag.autumn.org
まさにこれを読みました。c#のusingがc++にはない認識です。
この理由がこの通りならDisposeなしで心配ないのですが。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.035s