我需要一些幫助,在C. char*
初始化和strstr
這是普遍的問題:的valgrind的strstr錯誤
我有一個函數func1
FUNC1()FUNC2();
問題是,valgrind給出了一個基本上說strstr可能使用未初始化值的錯誤。爲了糾正這一點,我不得不做一些像char* str = "hello world";
,但我不能realloc
,這是一個問題。
我用隨機字符串測試了我的程序,問題在於valgrind將str
視爲未初始化的事實,但我不知道如何在不擺脫realloc能力的情況下對其進行初始化。有什麼建議麼?
的錯誤是:
==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
編輯:已在實際的功能,改變了名稱和這樣。
你能告訴你用哪個參數調用func1和func2嗎? – Nubok
沒有足夠的信息。顯示調用func2的代碼。 – cnicutar
對不起,我更新了。 func1的最後一行應該是'str = func2(path,str);'。調用func1的代碼是'char * cmd = func1(&i,len,arr,path);',其中'i'是一個有效整數,'len'是'arr'的有效長度,'arr'是字符串數組,「路徑」是單個字符串。 – anonymous