- C言語なら俺に聞け! Part 135©2ch.net
47 :デフォルトの名無しさん[sage]:2016/05/13(金) 15:35:57.01 ID:cduHyZK8 - >>45
http://i.imgur.com/THfSwDv.jpg 問題のexecはstudentmulです 一度にmallocしてるサイズはsizeof struct game_info{ MYSQL *sql; pthread_t thread; long gameid; char isDone; }; と struct id_chain{ long id; struct idchain *left; struct idchain *right; }; なのでだいたい16~24byteくらいかなぁとおもいまふ 小さいmallocを頻繁にするのは良くないっていうのをmallocのソース書いた人が言ってるのですがそれはCPU使用量の話なんですよ なんどもmalloc&freeするんじゃなくて使い終わったものを再利用するようなコードにしたほうがいいですかね?
|
- C言語なら俺に聞け! Part 135©2ch.net
48 :デフォルトの名無しさん[sage]:2016/05/13(金) 15:38:00.16 ID:cduHyZK8 - ちなみにgetpagesizeは4096でした
|
- C言語なら俺に聞け! Part 135©2ch.net
53 :デフォルトの名無しさん[sage]:2016/05/13(金) 16:44:30.82 ID:cduHyZK8 - http://i.imgur.com/zmzrQVL.jpg
psコマンドの結果はこうなりました http://i.imgur.com/LfSA3Rm.jpg valgrindってツールでチェックしてみたらこんな出力がされたのですが関係ありますかねぇ? pthread_createの中で使われたソースが解放されてないと出ているのですが。 ちなみにheadmanagerって関数の中のfree忘れがあるっていう出力は実際にはメモリリークじゃないので気にしないでくだしあ
|
- C言語なら俺に聞け! Part 135©2ch.net
54 :デフォルトの名無しさん[sage]:2016/05/13(金) 17:08:04.12 ID:cduHyZK8 - あっ
申し訳ない 言っていなかったがこのアプリケーション500個くらいのスレッドが同時進行しているというだけであってスレッドは20秒くらいで死んでまた生まれるっていう感じの内容 これって関係ある?
|
- C言語なら俺に聞け! Part 135©2ch.net
57 :デフォルトの名無しさん[sage]:2016/05/13(金) 17:16:18.43 ID:cduHyZK8 - >>55
... 本当に申し訳ない。 よく見たらスレッドごとにsqlのオブジェクト作ってる。 もしかしてこれが原因? そういうもんなんだと思ってた
|
- C言語なら俺に聞け! Part 135©2ch.net
60 :デフォルトの名無しさん[sage]:2016/05/13(金) 17:28:19.19 ID:cduHyZK8 - オブジェクト消してはいるのは確かだなあvalgrindがもし消していなかったら検知する筈だし
ちなみに作られたスレッドはオセロやりながらそのゲームの記録をDBに書いてるだけ そのスレッド達はmalloc使ってない
|