今天我在调试程序时遇到了一个问题。
我正在尝试将整数变量传递给同一程序中的函数。当函数接收到值时,函数内部的接收变量中的值不知何故有所不同,我只是无法找出原因。
下面是调用该函数的行。
prefetch_miss(addr,pref_m,sbuff,0,evict_row, SB);
下面是接收函数的开始3行。
void prefetch_miss(int address, int m, s **sbuff, int next, int r, cache *b) {
int index_value=0, tag_value=0;
address = address + 1;
请注意addr是一个全局变量。在调试中,我可以看到函数调用之前的addr值为33558587。在函数内部,address的值为33558569。
我哪里出错了?
最佳答案
检查您的全局变量之前是否定义了某种数组,并且您正在覆盖它超出数组大小的分配,从而更改变量地址的值。顺便说一句,如果地址是全局变量,为什么需要将其传递给例程?全局变量对所有例程都可见。
关于c - 当我将变量传递给函数时,变量的值会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21894628/