我有一个长程序,里面有一个int max。它无法正常工作,我发现max会无缘无故地更改为0,因为它的第一个值从未更改过。
我使用了很多印刷品来找出它发生的位置,并出于某种原因在这里发生:
printf("max is: %d\n",max);
qtail->block=0;
printf("max is: %d\n",max);
在此指令之前,max具有正确的值,而在max为0之后。该指针与max完全无关,也许我用完了堆栈内存,并且程序开始重写自身?... block也是int但在struct里面
答案 0 :(得分:3)
发生问题的原因是行为不确定;通过使用
printf("%p : %p", &(qtail->block), &max);
我看到max和qtail指针具有相同的地址,并更正了引起它的原因。