一个整数无缘无故地改变了,这可能是因为内存问题吗?

时间:2018-09-12 14:22:12

标签: c variables int

我有一个长程序,里面有一个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里面

1 个答案:

答案 0 :(得分:3)

发生问题的原因是行为不确定;通过使用

 printf("%p : %p", &(qtail->block), &max); 

我看到max和qtail指针具有相同的地址,并更正了引起它的原因。