游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1440|回复: 4

关于VECTOR

[复制链接]

12

主题

70

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2005-12-6 22:32:00 | 显示全部楼层 |阅读模式
今天使用vector想要保存一点数据,结果发现一些奇特的现象,也许是我不太熟它的用法,大家就先看看把
vector<WORD> buffer[4][15];

WORD indices[6];

FILE *fp = fopen("xxxx.dat","rb");
int i,j,k;
for(k = 0;k<15;k++)
{
    for(j = 0;j<16;j++)
    {
        for(i=0;i<16;i++)
        {
            fscanf(fp,"%d,%d,%d,%d,%d,%d\n",indices,indices+1,indices+2,indices+3,indices+4,indices+5);
            buffer[0][k].push_back(*indices);
            buffer[0][k].push_back(*(indices+1));
            buffer[0][k].push_back(*(indices+2));
            buffer[0][k].push_back(*(indices+3));
            buffer[0][k].push_back(*(indices+4));
            buffer[0][k].push_back(*(indices+5));
        }
    }

    for(j = 0;j<8;j++)
    {
        for(i=0;i<8;i++)
        {
            fscanf(fp,"%d,%d,%d,%d,%d,%d\n",indices,indices+1,indices+2,indices+3,indices+4,indices+5);
            buffer[1][k].push_back(*indices);
            buffer[1][k].push_back(*(indices+1));
            buffer[1][k].push_back(*(indices+2));
            buffer[1][k].push_back(*(indices+3));
            buffer[1][k].push_back(*(indices+4));
            buffer[1][k].push_back(*(indices+5));
        }
    }
    for(j = 0;j<4;j++)
    {
        for(i=0;i<4;i++)
        {
            fscanf(fp,"%d,%d,%d,%d,%d,%d\n",indices,indices+1,indices+2,indices+3,indices+4,indices+5);
            buffer[2][k].push_back(*indices);
            buffer[2][k].push_back(*(indices+1));
            buffer[2][k].push_back(*(indices+2));
            buffer[2][k].push_back(*(indices+3));
            buffer[2][k].push_back(*(indices+4));
            buffer[2][k].push_back(*(indices+5));
        }
    }
    for(j = 0;j<2;j++)
    {
        for(i=0;i<2;i++)
        {
            fscanf(fp,"%d,%d,%d,%d,%d,%d\n",indices,indices+1,indices+2,indices+3,indices+4,indices+5);
            buffer[3][k].push_back(*indices);
            buffer[3][k].push_back(*(indices+1));
            buffer[3][k].push_back(*(indices+2));
            buffer[3][k].push_back(*(indices+3));
            buffer[3][k].push_back(*(indices+4));
            buffer[3][k].push_back(*(indices+5));
        }
    }
}
fclose(fp);
问题是循环的时候发现最开始的时候K的值一直是0,循环了多次之后到buffer[0][0]的size超过了某个值(猜测)后才开始递增。而且是在最外层循环里面K刚递增完后,一进去到push_back的时候k就变成0了。郁闷死了,这么简单的循环都出错,不明白为什么

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2005-12-7 14:30:00 | 显示全部楼层

Re:关于VECTOR

这和vector好像没什么关系

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-12-7 14:35:00 | 显示全部楼层

Re:关于VECTOR

不关vector事情吧。。。

12

主题

70

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2005-12-7 15:30:00 | 显示全部楼层

Re:关于VECTOR

如果不是使用VECTOR的话,一个三层循环又怎么会出现循环变量不变化的情况呢?我实在是看不出这里还有什么其他的问题

12

主题

70

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2005-12-7 19:25:00 | 显示全部楼层

Re:关于VECTOR

又仔细的GOOGLE了一遍,后来的错误是变成到函数结尾的地方就堆栈报错,Run-Time Check Failure #2 - Stack around the variable"indices" corrupted.据说是溢出了.发现这个indices必须声明成indices[7]才不会有问题,真搞不懂,明明是读的6个
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 21:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表