いくつかの問題を引き起こしているように見えるレガシープロジェクトで次のコードを見つけました:
for( ; *str; ++str )
*str = tolower(*str);
問題は、tolower()の結果を*strに書き戻す必要があるときにSIGSEGVを取得することです。これは、printf()デバッグを使用して得たものであり、ここではJNIを使用しているため、Cライブラリにデバッガーをアタッチしても機能しないため、stracktraceが生成します。
Linuxでgccを使用してコンパイルすると、コードは失敗します。同じことをWindowsで実行すると(このクロスプラットフォームのセットアップにはCMakeが使用されます)、正常に機能します。
この理由をどこで見つけることができますか?感謝するヒント:)
ありがとう-マーカス