| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3035 人关注过本帖
标题:c++的问题。。。困扰很久了,一直不知道哪儿出错了。。。麻烦大家了
只看楼主 加入收藏
zxd675816777
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:252
专家分:631
注 册:2012-2-3
结帖率:80%
收藏
已结贴  问题点数:50 回复次数:6 
c++的问题。。。困扰很久了,一直不知道哪儿出错了。。。麻烦大家了
一直报错说是,BasicDynamicArray.exe 中的 0x75be9673 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0017f9cc 处的 std::bad_alloc。还有什么invalid allocation size。。。晕死了,求大家看看下面的代码啊。。。。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "efficientArray.h"
using namespace jj;

EfficientArray::EfficientArray(int size, double value)
{
    m_size=size;
    if(m_size>m_capacity){
      reserve(m_size,value);
    }
}

EfficientArray::EfficientArray(const EfficientArray& ba)
{
    m_size=ba.m_size;
    if(m_size>m_capacity){
      reserve(m_size,0);
    }
    for(int i=0;i<m_size;++i){
        m_data[i]=ba.m_data[i];
    }
}

EfficientArray& EfficientArray::operator = (const EfficientArray& array)
{
    if(this!=&array){
        m_size=array.m_size;
        if(m_size>m_capacity){
          reserve(m_size,0);
        }
        for(int i=0;i<m_size;++i){
            m_data[i]=array.m_data[i];
        }
    }
    return *this;
}

double    EfficientArray::at(int ind)
{
    if(ind<0||ind>m_size-1){
        printf("Error");
        return 0;
    }
    else{
        double result=m_data[ind];
        return result;
    }
}
double     EfficientArray::operator[] (int ind) const
{
    if(ind<0||ind>m_size-1){
        printf("Error");
        return 0;
    }
    else{
        double result=m_data[ind];
        return result;
    }
}
double& EfficientArray::operator[] (int ind)
{
    return m_data[ind];
}
int EfficientArray::push_back(double elem)
{
    ++m_size;
    if(m_size>m_capacity){
    reserve(m_size,0);
    m_data[m_size-1]=elem;
    }

    else{
      m_data[m_size-1]=elem;
    }
    return m_size;
}

int EfficientArray::insert(int ind, double value)
{
    if(ind<0||ind>m_size-1){
        printf("Error!");
        return 0;
    }
    else{
        ++m_size;
        if(m_size>m_capacity){
            reserve(m_size,0);
            for(int i=m_size-1;i>ind;--i){
              m_data[i]=m_data[i-1];
            }
            m_data[ind]=value;
        }
        else{
            for(int i=m_size-1;i>ind;--i){
              m_data[i]=m_data[i-1];
            }
            m_data[ind]=value;
        }
        return m_size;
    }
}

int EfficientArray::reserve(int num, double value)
{
    if( num<m_capacity )
    {
        printf("too small!");
        exit(1);
    }
    int capacity = m_capacity+num;
    int  size = m_size;
    double* tmp;
    tmp = new double[capacity];
    memcpy(tmp, m_data, size*sizeof(double));
    for(int i=size; i<capacity; ++i)
    {
        tmp[i] = value;
    }
    if(m_data!=NULL)
    delete[] m_data;
    else exit(1);
    m_size = size;
    m_capacity = capacity;
    m_data = tmp;
    return m_capacity;
}
bool EfficientArray::isValidateIndex(int ind)
{
    return false;
}
void EfficientArray::print()
{
    for(int i=0;i<m_size;++i){
        printf("%f ",m_data[i]);
    }
    printf("\n");
}

void jj::insertionSort(EfficientArray& a)
{
    int i,j;
    for(i=1;i<a.size()-1;++i){
      double tmp=a[i];
      j=i-1;
      while(j>=0&&tmp<a[j]){
        a[j+1]=a[j];
        j=j-1;
      }
      a[j+1]=tmp;
    }
}
搜索更多相关主题的帖子: 异常 allocation Microsoft include 
2012-11-05 21:37
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:10 
  (嗨----嗨----!)   我左看右看,上看下看   原来这个楼主真不简单   我想了又想,我猜了又猜   楼主们的心事还真奇怪   我左看右看,上看下看   原来每个代码都不简单   我想了又想,我猜了又猜   代码们的心事还真奇怪   唉真奇怪!   唻唻唻......喔哎噢!   唻唻唻......噢----!   (唉!算了,回家吧!)

WE GO
2012-11-06 08:51
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
没有头文件 无法调试

这种运行时错误  弄不好都是内存非法写操作  只有自己反复调试了

DO IT YOURSELF !
2012-11-06 09:22
zxd675816777
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:252
专家分:631
注 册:2012-2-3
收藏
得分:0 
回复 3楼 wp231957
恩呢呢,调试出来了。。。我sb了,就不应该晚上写代码。。。不初始化的后果很严重啊。。。

数学好难!
2012-11-06 16:25
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:10 
C++也来C版问 C版好厉害啊 呵呵
2012-11-06 16:28
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
收藏
得分:10 
有时候真弄不明白C++和C语言的区别
就像LZ头文件好像都是C的 命名空间好像又是C++的
看来还得好好看看C++

马马虎虎 不吝赐教 我是路过蹭分滴
2012-11-07 21:18
遗矢的老人
Rank: 9Rank: 9Rank: 9
来 自:成都
等 级:蜘蛛侠
威 望:7
帖 子:325
专家分:1131
注 册:2012-7-20
收藏
得分:10 
我想看看你哪儿创建的类?
2012-11-07 21:25
快速回复:c++的问题。。。困扰很久了,一直不知道哪儿出错了。。。麻烦大家了
数据加载中...
 
   



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

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