[過去ログ] 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
879(3): デフォルトの名無しさん [sage] 2018/06/14(木) 15:24:59 ID:BKSAN5oR(2/3) AAS
>>878878(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まさにこれを読みました。c#のusingがc++にはない認識です。
この理由がこの通りならDisposeなしで心配ないのですが。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.035s