我發現,似乎帶來一些麻煩的遺留項目下面的代碼:使用tolower()將char *字符串轉換爲小寫會導致SIGSEGV - 出現了什麼問題?
for(; *str; ++str)
*str = tolower(*str);
麻煩的是,我們得到了一個SIGSEGV此刻tolower的(結果)應該被寫入回* str。這是我使用printf()調試和stracktrace產生的結果,因爲我們在這裏使用JNI,因此將一個調試器附加到C庫並不適合我們。
如果在Linux上使用gcc進行編譯,則代碼將失敗。在windows上運行相同的東西(CMake被用於這個跨平臺設置)工作正常。
我在哪裏可以找到原因?任何提示讚賞:)
謝謝 - 馬庫斯
什麼是'str'指向?不是字符串常量? – 2012-04-10 09:21:14
它傳遞到我的函數:myfunction(char * str) – Markus 2012-04-10 09:22:55
'my function'=>您無法控制調用者? – ArjunShankar 2012-04-10 09:23:53