免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1793 | 回复: 4
打印 上一主题 下一主题

[求助]一个全局变量意外改变的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-05 14:49 |只看该作者 |倒序浏览
unsigned int SPACE_SIZE = 0;   

int _RetrialInodeTable()
{   
    int flag = NORMAL;

    if ( disk == NULL )
    {
        flag = DISK_ERROR;
        goto end;
    }
   
    long position = ftell( disk );
    rewind( disk );

    int i = 0;
    for ( ; i<__INODE_NUM; i++ )
    {        
        size_t readed = 0;
        readed = fread( (void *)&INODE_TABLE[i] , __INODE_SIZE , 1 , disk );
        
        if ( readed != 1 )
        {
            flag = DISK_ERROR;
            goto end;
        }
        
    }

    fseek( disk , position , SEEK_SET );
    clearerr( disk );

end:
    return flag;
}

   另,在包含的.h中有 extern unsigned int SPACE_SIZE;  的声明。

   问题:在上面代码段里的for循环前, SPACE_SIZE =0, 循环之后成了 0xcccccc00 ?
   想不通为什么会改变...

   学期末做操作系统课程设计,可能头昏了,希望有人能指点下...

论坛徽章:
0
2 [报告]
发表于 2008-01-05 15:08 |只看该作者
INODE_TABLE溢出?

论坛徽章:
0
3 [报告]
发表于 2008-01-05 15:14 |只看该作者
好像是...

&SPACE_SIZE           == 0x00fc4e74
&INODE_TABLE[last] == 0x00fc4e70
一个INODE_TABLE元素大小是 24 byte

有什么办法能解决么?
另外想知道为什么会溢出,不是应该都分配好空间了么?

[ 本帖最后由 zzdts 于 2008-1-5 15:16 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-01-05 15:23 |只看该作者
INODE_TABLE是数组的数组?
然后把指针当数组用了?

论坛徽章:
0
5 [报告]
发表于 2008-01-05 15:24 |只看该作者
没事了....
定义 INODE_TABLE 的时候考虑疏忽了,长度跟想的不一致...
for 里面的控制变量控制的长度比数组长度多了....

谢谢解答.^-^

[ 本帖最后由 zzdts 于 2008-1-5 15:29 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP