[ttssh2-dev 412] Re: 開放するべきメモリ

Back to archive index
matsuo zmats****@gmail*****
2022年 5月 24日 (火) 01:00:27 JST


松尾です。

 >> TTSetIcon()で、アイコン名にNULLを渡した時の動作ですが、
 >> (r9933で直していただいたtypoのところです)
 >> もしかすると、NULL を WM_SETICONして、
 >> 戻ってきたハンドルをDestroyIcon() するほうが
 >> 良いような気もします。考え中です。
 >
 > SETICON したときに押し出された既存のアイコンのハンドルと、
 > GETICON で得られる今のアイコンのハンドルに違いがあるのでしょうか?

おなじです、でもSETICONだとウィドウのアイコンが
セットされていない状態(NULLをセットする)にできます。

GETICON → DestroyIcon() すると、
ウィンドウはまだそのHICONを使っているのに
捨てちゃうの?と感じてしまいます。
(たぶん本当はOS内部でいい感じに処理されているんだと思います。)

SETICON で NULL をセットする(=ウィンドウのアイコンをない状態にする)
→ 同時にセット前のアイコンが取り出せる(=GETICON)
→ DestroyIcon()
だとOS任せじゃなくてDestroyしている感じがするな、と思いました。


 > SSH 接続したあとだと 1500 くらいダンプが出ますよね。
 > ttxssh 内で確保されたものもあるようです。
 > 「ウィンドウを閉じずに再度接続する」を繰り返していくと、
 > どうなるか気になりますね。

私たちのソースならどこで確保したかがファイル名と行がダンプに出るので
ソースが出ないダンプが怪しいですよね。
または何かの終了処理が抜けているか?


 > 意図して free しないところは、コメントがあると分かりやすくて助かり
 > そうです。

了解です。

 > マージすることの影響がどう出るのかは私には分かりませんが、
 > 「サポートを切る予定の OS である XP で落ちる」ことへの対応としての
 > マージよりも、重要度の高い作業があると思います。

手もとのWindows10で動作しているので
ほんとにやってはいけないのかがよくわからないので
悩ましいです。

この内容が参考になりそうですが…
https://devblogs.microsoft.com/oldnewthing/20060915-04/?p=29723

いくつかあるdllもexeも同時にビルドしているので
全く同じ動作のヒープ処理(malloc,free)を使っているはずなんですよね。
モジュールをまたいだ処理はとりあえず気にせずに作っていって
問題が出てきたら考えましょうか。
dllをexeにマージすることを考えるのはちょっと置いておきましょう。



ttssh2-dev メーリングリストの案内
Back to archive index