私はこのようなCプログラムを持っています。
int indexLength;
char *args[1024];
while(args[indexLength])
indexLength++;
職場のコンピューターでプログラムを実行すると、while ループの行で segfault が発生し、indexLength はばかげた任意の値を取ります。しかし、自宅の Linux マシンでプログラムを実行すると、セグメンテーション違反は発生せず、プログラムは正常に実行されます。
私が考えることができる2台のマシンの唯一の違いは、職場のマシンにはgcc4.7 redhatバージョンがあり、Fedora OSを実行しており、自宅のマシンにはppaリポジトリからダウンロードされたgcc4.7があり、ubuntu OSを実行していることです。しかし、それが唯一の違いだとは思いません! それは何でしょうか?
編集:申し訳ありませんが、言及するのを忘れていました。indexLength = 0を初期化すると、職場のコンピューターでセグメンテーション違反がなくなりました..