Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> delete[] temp; abort:error 
:(
    Опции темы
observateur
Дата 7.10.2006, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 10.6.2006

Репутация: нет
Всего: нет



Нужно помощь ?  
Код

#include "stdafx.h"
#include <iostream>
using namespace std;
class money
{
private: char ch[40];
         long double ld;
         int lenth;

public: void getdata()
        { cout<<"Enter your money: ";    cin>>ch; }
        void putdata()
        { cout<<"money you entered: "<<ch<<endl; }

    

        void mstold()
        {
            char tempch[40];
            for(int j=0,k=0; j<40;)
            {
                if(ch[j]!='$' && ch[j]!=',')
                {
                    tempch[k]=ch[j];
                    k++;
                }
                j++;
            }

              ld=atof(tempch);
              lenth=strlen(tempch);
             
        }

        void ldtoms()
        {
            char* temp=new char [lenth];

            gcvt(ld,lenth,temp);

            for(int j=0;j<lenth;j++)
                ch[j]=temp[j];
            delete temp;
        }

        void madd(money& m2)
        {
            ld+=m2.ld;
        }



};

int main(int argc, char* argv[])
{
    money m1,m2;
    m1.getdata();
    m2.getdata();
    m1.mstold();
    m2.mstold();
    m1.madd(m2);
    m1.ldtoms();
    m1.putdata();    


    return 0;
}

почему в этой программе когда удаляю указтел “ delte []temp”  у меня выходрт ошибка
Код

void ldtoms()
        {
            char* temp=new char [lenth];

            gcvt(ld,lenth,temp);

            for(int j=0;j<lenth;j++)
                ch[j]=temp[j];
            delete [] temp;
        }

        void madd(money& m2)
        {
            ld+=m2.ld;
        }


   

PM MAIL   Вверх
Daevaorn
Дата 7.10.2006, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



observateur
Код

gcvt(ld,lenth,temp);

Здесь скорей всего произходит выход за приделы массива temp. Слишком маленький размер. 
Hint: lenth такого слова в англ. языке нетsmile
PM MAIL WWW   Вверх
Kuvaldis
Дата 7.10.2006, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



Имхо, пробема здесь
Код

char* temp=new char [lenth];


Не выделяется память на хранение завершающего строку NULL
нужно так
Код

char* temp=new char [lenth + 1];


Посмотрел, я не прав
Прав Daevaorn
Например, при конвертации 1665 получается 1.66е+03

observateur,
сделай так
Код

char* temp=new char [40];


P.S. Эти сорок вынеси как константу, а то в коде иногда трудно понять, что такое число (не к твоей программе)
Да и изменять размер легче
т.е. const int  LEN = 40;

Это сообщение отредактировал(а) Kuvaldis - 7.10.2006, 20:26


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0828 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.