配列が常に隣接していると仮定すると、iamがmemcpyを実行しているので、QPop関数に何か問題があるのではないかと思います。
-- C snip ---------
int Q[5];
int QPush();
static int pushIdx;
int QPush (int *q, int val)
{
int ret=0;
if ( isQFull(q) )
return -1;
q[pushIdx++] = val;
return ret;
}
int QPop ( int *q)
{
int i, ret=0;
unsigned long size = pushIdx -1 ;
if ( isQEmpty(q) )
return -1;
ret = q[0];
if ( size > 0 )
memcpy ( q, q+1, (size*sizeof(int)) );
q[pushIdx-1] = 0;
pushIdx--;
return ret;
}
int main()
{
QPush(&Q , 11);
QPush(&Q , 12);
QPush(&Q , 13);
printf ( "pop = %d ", QPop(&Q));
printf ( "pop = %d ", QPop(&Q));
}
どうも。-Nathanすべての条件[プラットフォーム最新のLinuxgcc]で正常にテストされたため、Iamは破損する可能性のあるケースを探しています。