C言語関係掲示板

過去ログ

No701 閉じるボタンでの終了処理

[戻る] [ホームページ]
No.8286

閉じるボタンでの終了処理
投稿者---NARUTO(2003/07/11 21:33:05)


コンソールアプリケーションを終了させるときに、閉じるのボタンが押されたタイミングで動的に確保したメモリを開放したいのですが、閉じるボタンが押されたことを知る方法はありませんか?

No.8289

Re:閉じるボタンでの終了処理
投稿者---YuO(2003/07/11 23:46:04)


>コンソールアプリケーションを終了させるときに、閉じるのボタンが押されたタイミングで動的に確保したメモリを開放したいのですが、閉じるボタンが押されたことを知る方法はありませんか?

コンソールアプリケーションって何ですか?
環境が不明なのでなんとも答えようがないです。


とりあえず,環境をWindowsに限定すると,
#私が知っている「コンソールアプリケーション」なる用語を使う環境がそれしかないから
SetConsoleCtrlHandler API使えば知ることが出来ます。


No.8295

Re:閉じるボタンでの終了処理
投稿者---かずま(2003/07/12 14:29:06)


> コンソールアプリケーションを終了させるときに、閉じるのボタンが押された
> タイミングで動的に確保したメモリを開放したいのですが、

メモリの動的確保について大きな誤解があるものと思われます。

アプリケーションプログラムが終了するとき、そのプログラムが使っていたメモリは
すべてが自動的にシステムに返却されます。プログラムコードの領域も、
静的データ領域も、スタックも、ヒープ(動的データ領域)もです。

規格書の「7.10.3.2 free関数」には
「free関数は、ptrが指す領域を解放し、その後の割付に使用できるようにする。」
と書かれています。
次に、malloc を実行しないのであれば、free する必要はありません。

free してもかまいませんが、プログラムの終了時に free するのは無駄で、場合に
よっては終了処理に時間をとられて、閉じるボタンを押したのにずいぶん待たされて
ユーザがイライラするというようなことになってしまうかもしれません。