| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 670 人关注过本帖, 1 人收藏
标题:数组was corrupted,没有越界。
只看楼主 加入收藏
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
结帖率:91.43%
收藏(1)
已结贴  问题点数:20 回复次数:6 
数组was corrupted,没有越界。
程序代码:

......
void main_1(int * n_file_, FILE * open, FILE ** file)
{
    //    FILE *file[9] = { write_8, write_9, write_10, write_11, write_12, write_13, write_14, write_15, write_16 };
    char temp[40];
//    char *temp = (char *)malloc(sizeof(char)* 40);
    int i,j=0,lenth=0,count=0;
    while (!feof(open))//判断是否到文件尾部
    {
        if (j == 0)
            count++;

//        if (count ==5950275)
//            system("pause");
//        printf("%d\t",count);
        j = 0;
        fscanf(open, "%s ", temp);//从文件读取一个字符串
        i = length(temp);//根据字符串长度确定输入哪一个文件,若返回值为0,则跳过这个字符串
        if (i == 100)//
        {
            count--;
            j = 1;
        }
        else
            lenth = i;
        if (lenth == 0)
            continue;
    
        else if (lenth < 9)//写入对应的文件
        {
            file_write(temp, file[0],j);
            n_file_[0]++;
        }
        else if (lenth>15)
        {
            file_write(temp, file[8],j);
            n_file_[8]++;
        }
        else
        {
            file_write(temp, file[lenth - 8],j);
            n_file_[lenth - 8]++;
        }
    }
//就是这个地方
}


当count=5950276时出错:
Program:**\.exe
Module:**\.exe
File:
Run-Time Check Failure #2-Stack around the variable 'temp' was corrupted

看了下数组没有越界。在“就是这个地方”停了下来。查了资料,改了project->配置属性->c/c++->代码生成->基本运行时检查 设置为默认值,但是没有用,只是不出现提示框,到了这个值仍然出错。
搜索更多相关主题的帖子: file 
2015-01-23 11:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不知道你想干什么,temp[40],但又弄个if(length(temp)==100)这类东西出来,还有5950276的,都比40大多了。

授人以渔,不授人以鱼。
2015-01-23 12:10
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
收藏
得分:0 
回复 2楼 TonyDeng
temp里面存的是字符串,strlen是存的字符串长度,便于分类,根据长度存入哪一个文件。==100是一个补充输入的判断。
count是用来计数的,方便找在哪一步出错。
2015-01-23 14:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
你的错误就是栈破坏,关闭越界检查只是不理会越界,不等于没有越界,越界就仍然出错,只是不再告诉你错了而已,网上搜来的“解决”方案害死人。自己在程序中写检查越界的代码,这是唯一解决之道。根据程序的目的,有针对性地写检测代码就是了。

授人以渔,不授人以鱼。
2015-01-23 14:41
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
收藏
得分:0 
回复 4楼 TonyDeng
也就是还是temp越界了?
2015-01-23 14:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我没看懂你的代码想干什么。

授人以渔,不授人以鱼。
2015-01-23 14:50
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
收藏
得分:0 
回复 6楼 TonyDeng
真的是越界了,不过在好之前就越界了。
这个是做一个特征统计的一个部分
2015-01-23 15:02
快速回复:数组was corrupted,没有越界。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049917 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved