char*
初期化とstrstr
C で助けが必要です。これは一般的な問題です。
私には機能がありますfunc1
func1() func2();
問題は、valgrind が基本的に strstr が初期化されていない値を使用している可能性があるというエラーを出すことです。これを修正するには、 のようなことをしなければなりませchar* str = "hello world";
んが、それができませんrealloc
。これが問題です。
私は自分のプログラムをランダムな文字列でテストしましたが、問題は valgrind がstr
初期化されていないものとして扱っているという事実ですが、再割り当てする機能を取り除かずに初期化する方法がわかりません。助言がありますか?
エラーは次のとおりです。
==14356== Conditional jump or move depends on uninitialised value(s)
==14356== at 0x4C29313: strstr (in path)
==14356== by 0x401983: func2 (in path)
==14356== by 0x401B06: func1 (in path)
==14356== by 0x4013D7: main (in path)
==14356==
==14358== Syscall param execve(argv[i]) points to uninitialised byte(s)
at 0x4ECFCB7: execve (in path)
==14308== by 0x4E6A76C: do_system (in path)
==14308== by 0x4013ED: main
編集:実際の機能に追加、名前などを変更。