割り当て部分が次のビットマップソートプログラム:
for(i = MAX/64-1;i >= 0;i--){
for(j = 0;j < 64;j++){
if(0 != (arr[i] & (1 << j))){
*p++ = j + 64 * i;
}
}
}
if条件が0を返し、プログラムがまだブロックに入り、ステートメントを実行する場合があります。
*p++ = j + 64 *i;
これにより、最終的にsegmentfaultが発生します。どの状況で発生するのかわかりません
例: 次
のような gdb ステータスの場合:
j=44, i=6250, arr[i]=4096 でprint (arr[i] & (1 << j))
0
が返されるが、プログラムはまだブロックに入る