C/C++の宿題を片付けます 117代目 at TECH
[2ch|▼Menu]
396:394
08/11/08 02:25:45
>>387
あー、違うところかもしれん

原因はそこじゃなくて、gets() やってるところだと思う
simple_accept_input() のローカル変数 str[] に取り込んでるでしょ
strtok(str, " ") とやっているわけだから strtok によって得られるポインタは、
このローカル変数 str[] を参照する。
ローカル変数の寿命はその関数を抜けるまで。
実際 str[] はスタック領域に作られるわけだから、後に関数が実行されたときに
破壊される可能性大。
今回はそれがたまたま fork() 実行時に重なっただけで、fork() 自体によって
データロストしてたわけではなさそう(そもそも fork は全データコピーだしね)

普通、ポインタでいろんなとこから参照されるデータを、特定の関数のローカル変数にしまってはいけない。
gets したデータは、main のローカル変数なりグローバル変数なり malloc するなりして不揮発にしておかないと


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4985日前に更新/337 KB
担当:undef