我在一个遗留项目中发现了以下代码,这似乎会造成一些麻烦:
for( ; *str; ++str )
*str = tolower(*str);
问题是,我们得到了一个 SIGSEGV,此时 tolower() 的结果应该写回 *str 。这是我使用 printf() 调试和 stracktrace 产生的结果,因为我们在这里使用 JNI,因此将调试器附加到 C 库对我们不起作用。
如果在 linux 上使用 gcc 编译,代码会失败。在 Windows 上运行相同的东西(CMake 用于此跨平台设置)工作正常。
我在哪里可以找到这种情况的原因?任何提示表示赞赏:)
谢谢 - 马库斯