C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: _tsetlocale連続使用すると消費メモリ増大し続ける


(過去ログ 89 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■53100 / inTopicNo.1)  _tsetlocale連続使用すると消費メモリ増大し続ける
  
□投稿者/ ホエホエ (15回)-(2010/09/03(Fri) 09:17:16)

分類:[C/C++] 

いつもお世話になっております。

今回は当方制作のDLL内でログファイル出力をしたくて
CStdioFileを使用し文字列を書込んでるんですが…

その際にUNICODE環境なので日本語出力するために
書込処理前に_tsetlocaleを呼び出しております。

すると外部の.NET作成のexeよりDLLのAPIを通じて
ログ出力を連続で呼び出して「タスクマネージャ」で
使用メモリを確認しているとどんどんと増えていきます。
ログ出力以外の部分をコメントにしても同じで、
さらにログ出力部もコメントにして_tsetlocaleだけを
実行してても結果は同じで、逆に_tsetlocaleのみを
コメントにして他の処理が動作するようにすると、
メモリの増加はしなくなりました。

_tsetlocaleを連続で呼ぶと上記のようにメモリを
大量に消費するのでしょうか?あともし対策法が
あったら教えてください。お願いします。

環境
OS: WindowsXP
EXE側: VisualStudio2003 C#.NET
DLL側: VisualStudio2003 C++ MFC
引用返信 編集キー/
■53102 / inTopicNo.2)  Re[1]: _tsetlocale連続使用すると消費メモリ増大し続ける
□投稿者/ 774RR (535回)-(2010/09/03(Fri) 10:51:25)
Visual Studio 2005 Pro にて
---loctest.c---
int main() {
 getchar();
 for (int i=0; i<100000; ++i) _tsetlocale(LC_ALL, _T(""));
 getchar();
}
としてみたところ、単にこれだけならばタスクマネージャ上の数値は増えなかった。

何か他に原因があるんぢゃないの? (2番目の引数を strdup で作ってるとか)

なぜ setlocale を何回も呼び出さなきゃならんのかが微妙だけど...
初期化時に1回呼び出せば必要十分なはずだが。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -