奇妙なイベントが発生したときにEclipseでCアプリケーションをプログラミングしています。
構造体へのポインターを渡す関数があり、関数内で、このポインターに同じ型の他のポインターを割り当てます。このような単純な割り当てです
pointer = otherPointer;
次に、魔法のように、私の割り当てはプログラムによって完全に無視されます。私はgdbで改良しましたが、この行のプログラムパスのように見え、命令は無視されます。
この超常現象の原因を考えている人がいますか?
プログラムには、同様の動作を持つ同様の関数があり、割り当ては正しく行われます。
問題の関数は次のとおりです。
void uah_pcb_extract_queue_head (struct UAH_PCB * pPCB, struct UAH_PCB_Queue * pQueue)
{
if (pQueue->head->next != NULL)
{
pPCB = pQueue->head;
pQueue->head = pQueue->head->next;
}
else if (pQueue->head != NULL)
{
pPCB = pQueue->head;//this allocation
pQueue->head = NULL;//in this line the value has not changed
pQueue->tail = NULL;
}
else
{
pPCB = NULL;
}
}