ソケットプログラムでメモリ使用量が増加する。 – プログラミング – Home

ソケットプログラムでメモリ使用量が増加...
 
通知
すべてクリア

[解決済] ソケットプログラムでメモリ使用量が増加する。


R
 R
(@R)
ゲスト
結合: 22年前
投稿: 48
Topic starter  

お世話になります。

現在、CAsyncSocketクラスをもちいたソケット通信プログラムを作成しています。
一応、サーバとクライアント間で通信はできています。

しかし、データ受信する度にプログラムのメモリ使用量が増加してしまいます。
ちなみに、デバックモードで実行してもメモリリークは表示されていません。
※(メモリ使用量は、タスクマネージャーにて確認)

データ受信は、CAsyncSocketクラスを継承し自作したクラスのOnReceive内にてReceive
関数にて行っています。

このメモリ使用量が増加する現象を解決するには、どうすればよいのでしょうか?
アドバイスよろしくお願いします。

環境
OS:XP 
VC++6.0 SP6


引用未解決
トピックタグ
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

それって本当にメモリリークなの?
タスクマネージャで何を(どの項目を)確認したの?

メモリリークと思っているものは実はメモリリークでないことが多々ある。


返信引用
R
 R
(@R)
ゲスト
結合: 22年前
投稿: 48
Topic starter  

コメント有難うございます。

タスクマネージャのプロセスタブのメモリ使用量の欄にある数字が大きくなります。
また、パフォーマンスタブの物理メモリの利用可能の数字が小さくなっていきます。


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

タスクマネージャの「メモリ使用量」は正確には WorkingSet Size なので
「今この瞬間に RAM 上に存在するワークエリア量」である
(したがって真の意味でメモリ使用量なわけだ)

これが増えたからといってメモリリークではない
http://d.hatena.ne.jp/NyaRuRu/20060730/p1

ためしに最小化ボタンを押してアイコン化すると一気に減ったりしないかい?


返信引用
FUKU
 FUKU
(@FUKU)
ゲスト
結合: 17年前
投稿: 73
 

メモリリークを調べたいなら、パフォーマンスモニタの
private bytesや、handle countを見るべきと思いますが


返信引用
Jason
 Jason
(@Jason)
ゲスト
結合: 16年前
投稿: 26
 

必ずソケットに関連がありません。
new delete handleなどをゆっくりチェックするほうがいいと思います。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

Debugモ-ドで実行してリークで終わったところで停止することではだめですか?


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

なんかおかしいですね。
「Debugモ-ドで実行して、リークしたと予想できるところで停止する。」
これではだめですか?


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> なんかおかしいですね。
> 「Debugモ-ドで実行して、リークしたと予想できるところで停止する。」
> これではだめですか?

デバッグモードでリークの痕跡が見つからないので、
どこでリークしているか見当がつかないのでは?

ところで、デバッガを使いこなせていないために、リークを検出できていない可能性
は?
{
int *p = new int;
}
とか書いて、検出できるんですよね?


返信引用
R
 R
(@R)
ゲスト
結合: 22年前
投稿: 48
Topic starter  

各位 コメントありがとうございます。

もう一度プログラムを見直してたところ、受信処理の際に作成した受信バッファがうま
くdeleteされていない事が原因でした。

このような初歩的なミスにより、的外れな書込みしてしまい申し訳ありませんでした。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました