| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 480 人关注过本帖
标题:求大神问题额。。。我快疯了
只看楼主 加入收藏
zxd675816777
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:252
专家分:631
注 册:2012-2-3
结帖率:80%
收藏
 问题点数:0 回复次数:0 
求大神问题额。。。我快疯了
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 22:11
快速回复:求大神问题额。。。我快疯了
数据加载中...
 
   



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

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