Форум программистов, компьютерный форум CyberForum.ru

Ошибка при освобождении памяти массива char* - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Описать структуру с именем ITINERARY http://www.cyberforum.ru/cpp-beginners/thread1086570.html
Описать структуру с именем ITINERARY, который вмещает в себе, следующие поля: FIRST– название начального пункта маршрута, FINAL– название конечного пункта маршрута, NUM– номер маршрута, DISTANCE– расстояние в километрах. Написать программу, которая отдельными функциями выполняет следующие пункты: – введение с клавиатуры, данных в массив ROUT, который состоит из N переменные типа...
C++ Побочная линия Здаров! http://informatics.mccme.ru/mod/statements/view3.php?id=282&chapterid=354#1 Помогите с задачей плиз! int n; int j; cin>>n; int arr; for (i=0;i<n;i++) http://www.cyberforum.ru/cpp-beginners/thread1086568.html
C++ Заполнить массив-структуру используя цикл
Здравствуйте.Задача: заполнить структуру значениями #include <stdio.h> #include <conio.h> #include "stdafx.h" #include <iostream> #include <iomanip> using namespace System; using namespace std; bool place;
Обьясните что происходит в данной функцие C++
Объясните неучу, очень интерестно что происходит в if ((....)) do { std::cout << "Введите число: "; std::cin >> num; if ((temp > 0 && num < 0) || (temp < 0 && num > 0)) count++;
C++ BigInt, взятие степени http://www.cyberforum.ru/cpp-beginners/thread1086543.html
Добрый день столкнулся с такой задачей: необходимо получать значения чисел при возведении их к большим степеням ( например 2 ^ 100000 ). Для этих целей я нашел исходники класса BigInt. Он отлично и быстро возносит в степень (...
C++ Простейшая программа, вывод на экран суммы, разности двух чисел. Ошибка Пишу свою вторую программу на C++, Программа просит пользователя ввести два числа, получает числа от пользователя и затем печатает сумму, произведение, разность и частное этих чисел. Проблема: При компилировании ошибок не найдено, но в командной строке вывод на экран не производится либо производится, но окно скрывается. Соответствующий раздел на форуме читал, не вижу собственной ошибки.... подробнее

Показать сообщение отдельно
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133

Ошибка при освобождении памяти массива char* - C++

31.01.2014, 20:16. Просмотров 502. Ответов 5
Метки (Все метки)

Класс должен читать слова из файла (C:\\IN.TXT) по одному, и выводить на экран.
Почему появляется ошибка в строке 56, и в конце программы, видимо тоже при удалении?
И еще, почему если при создании объекта с помощью конструктора по умолчанию, то все места, где используется этот объект, подчеркиваются, и пишется "expression must have class type"?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "stdafx.h"
#include <iostream>
using std::cout;
using std::endl;
#include <string>
#include <fstream>
using std::ifstream;
#include <conio.h>
 
class Word
{
private:
    char *str;
public:
    Word();
    Word(ifstream &);
    ~Word();
    void read(ifstream &);
    void print() const;
};
 
int main()
{
    ifstream fin("C:\\IN.TXT");
    Word word_obj(fin);
    word_obj.print();
    word_obj.read(fin);
    word_obj.print();
    getch();
    return 0;
}
 
Word::Word()
{
    str = new char[1];
    str = "";
}
 
Word::Word(ifstream &fin)
{
    str = NULL;
    read(fin);
}
 
Word::~Word()
{
    if (str != NULL)
        delete [] str;
}
 
void Word::read(ifstream &fin)
{
    char tmp[50];
 
    fin >> tmp;
    if (str != NULL)
        delete [] str;
    int len = strlen(tmp);
    str = new char[len];
    for (int i = 0; i <= len; i++)
        str[i] = tmp[i];
}
 
void Word::print() const
{
    setlocale(LC_ALL,"rus");
    cout << "\"" << str << "\"" << endl;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru