このコードを実行すると、セグメンテーション違反が発生しますが、変更result
するblah
と問題なく動作します。私は、signed/unsigned、sscanf/atoi、initializing/not、int/char のすべての順列を試し、引数としてではなくポインターを直接使用することさえ試みました。
char* が null でないことはわかっています。唯一の変更点は、変数の名前です。
誰がこれを引き起こすのか知っていますか? 単純に怪しい…
編集: このファイルのスコープには他の変数はありません。
編集: に関連しているようreturn
です。使用した値を返すと、エラーが発生しますが、クラッシュする前に制御が関数を離れることはありません。
unsigned int getHashValue(char* key, char** table, unsigned int tableCount)
{
int i = 0;
//unsigned int length = strnlen(key,1024);
unsigned int length = 1024;
printf("Hashing...\n");
unsigned int blah;
int result;
for (i=0;i<tableCount;i+=2)
{
printf("i: %i\n",i);
if (strncmp(key,table[i],length)==0)
{
printf("found %s\n", table[i+1]);
/*sscanf()*/
result = (unsigned int) atoi(table[i+1]);
//blah = atoi(table[i+1]);
//sscanf(table[i+1],"%i",&result);
return result;
}
}
printf("..done\n");
return 0;
}