定義した「ヘッダー」構造体の配列の長さを見つけようとしています (ここで関連する場合、ヘッダーはいくつかの情報を提供する int メンバーを保持するだけです)。fl
、配列の先頭へのポインター、および配列の末尾に配置されてidx
いる適切なポインターがどこにあるかを示すインデックス値を渡すことでこれを試みfl_tails
ます (他の/繰り返しの言葉では、「fl_tails[idx]」は最後へのポインタ):
int arr_size(header* fl, int idx){
int cnt = 1; /* Anything passed guaranteed to have at least 1 */
while(fl != fl_tails[idx]){
fl++;
cnt++;
}
}
これで最後までポインタを進めてカウントをきちんと生成するだけかと思ったのfl
ですが、無限ループに陥ってしまいます。これは、この機能の何かが原因なのか、それとも他の場所で見つけなければならないことが原因なのか疑問に思っています。先頭と末尾のアドレスを unsigned int として出力したところ、それぞれ 16777216 と 16777344 のように無害に見えました。header
たぶん、構造とそのサイズ/ステップへの影響についての私の理解にも何か問題がありますか?