こんにちわ
hspmallocが変数解放を最後に行ってるのに憧れて
定義を探してるのですが 自分の検索スキルではみつからなくてですね
hsp3struct.hに
// Plugin info data (3.0 compatible) 331 typedef struct HSPEXINFO30 381 char *(*HspFunc_malloc)( int size );
と書いてあるところまで辿れたんですけど
その処理をどこに書いてるのかわからなくて
記述の箇所を教えていだたけると幸いです
通常strbuf.cppのsbAlloc関数と思われます。
ご回答ありがとうございます
strbuf.cppのsbAllocは
返り値で
91 static char *BlockAlloc( int size )
を呼んでるぽいですね
こういうのはどう検索したらいいのでしょうか
OpenHSPをDLして検索かけるかんじですか?
とはいえtds12さんなら
なんとなく頭に入ってそうですね
Visual Studioを使っているなら(2013で確認)
ソースのキーワードの上で右クリックしてメニューから
「すべての参照の検索」をすると、
そのキーワードが使われている一覧が出てきます。
そこで代入されているところを探して、
その代入している関数の「定義へ移動」をしました。
VisualStudio2012でやってみました
無事、動作を確認出来ました
ありがとうございました
追記 OpenHSPからのDLの仕方がわからなくて
試行錯誤した後 ググったらzakkiさんのgithubんとこに
ちょっと古いかもしれないですが 一式あったので
メモ的追記でした
例えば DLLとかは メモリーリークってどんなかんじなんですか?
少々メモリーリークしてても リークしてるアプリとかが終了した場合
リークしてるメモリ含め 返却されるもんなんですか?
僕の考えはそれっぽくて 少々メモリーリークしてもいいかな?って結論です
メモリーリーク寛容で作ってた場合
メモリーリーク少々してても アプリ終了で返却なら
下手なメモリ管理でメモリ参照時 なくてエラー
と同じようなリスクのような気がするんですよね
DLLの中でmallocした場合
使用してる関数の中でmallocして
関数抜けてもその変数は生きてるっぽいのですが
そのような場合
mallocはHSPmallocでして
onexitした場合にfreeすればOKっぽいっすね
onerrorの処理も書かなきゃダメなのかなあ
質問が漠然としすぎだったのでまとめてみます
mallocしてメモリを割り当てると
そのexeが終了した時
割り当てたメモリは解放されるんですか?
dllの中でmallocしたメモリはどうなんすか?
自分的には解放してくれそうに思うんですが
あくまでも推測の域を出ず
詳しい人のおすみつきが欲しい訳であります
Yahoo!知恵袋に行きなさいなら行くので
よろしくお願いします
> mallocしてメモリを割り当てると
> そのexeが終了した時
> 割り当てたメモリは解放されるんですか?
はい。
開放されます。
> dllの中でmallocしたメモリはどうなんすか?
dllが生きてる限りはメモリ・リークのままでしょうね。
回答ありがとうございます
ただ まだもやもやしてて
というのもCはdllの中で使いたいので
>> dllの中でmallocしたメモリはどうなんすか?
>dllが生きてる限りはメモリ・リークのままでしょうね。
ということですが
exeが終了した時 exeの中で呼び出した
dllの中でmallocしたメモリも解放されるんですか?
onexitとonerrorの処理で明示的にdllを解放しなきゃいけないんですか?
どうも質問ばっかでスイマセン
DLL が終了する際、DllMain? が呼ばれて、その中の fdwReason に関数の呼び出し理由が
設定され、それが DLL_PROCESS_DETACH である場合 DLL 終了のメッセージなので、
そこで DLL で確保したメモリーを解放すればいいんじゃないの?
重箱の隅をつつくような書き込みで申し訳ない
DLL作成においてmallocの使用が全然イメージ出来ないんですよね
DLLじゃなくても使ったことないんですが
>そこで DLL で確保したメモリーを解放すればいいんじゃないの?
なるほどそういうことでしたらHSPmallocでまとめて解放出来たら楽っすね
>DLL が終了する際
DLLはexeの終了と共に終了すると思っていましたが
明示的に終了させる必要があるんですか?
ちょっとググったら
>プログラムを終了させるには、exit()を使います。
と書いていたんですが
DLLの中でexit()の使用でDLL終了という認識でOKですか?
以前作成したwikiのまとめサイトみたいのに
ここのスレッドの内容をコピペしようと思っているので
コピペして欲しくない人がいましたらご一報ください
いつのまにかスパムに荒らされて移転中でございますが^^;