Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Запуск программ из другой программы Подскажите пожалуйста, что делаю не так. Задача следующая: Есть несколько программ, которые нужно поочерёдно запускать и выполнять в них некоторые действия. Программы которые нужно запускать пользователь сам должен указать в txt файле конфигурации. Столкнулся с проблемой, что программу путь к которой указан в файле не запускат нужную программу.. Ниже код. //Подключаем библиотеки... https://www.cyberforum.ru/ cpp-beginners/ thread1255056.html C++ Найти ранг матрицы. Перевод из Pascal в С++
переведите пожалуйста код в С++ или С. {Найти ранг матрицы } var n,m,min,l,k,j,rang: byte; a: array of real; sz: real; begin
C++ Жеребьевка футбольного чемпионата Хочу написать программу для расчета, допустим, футбольных матчей Что должно быть в программе: Выбор количества команд (от 10 до 20). Выбор количества игроков в команде (от 1 до 3). Вот например: Команда 1 @Игрок 1 https://www.cyberforum.ru/ cpp-beginners/ thread1255036.html C++ Определить ранг матрицы https://www.cyberforum.ru/ cpp-beginners/ thread1255025.html
привет всем.я написал код ввода-вывода матрицы,а мне надо посчитать ранг матрицы..сижу уже 2 день,не могу ничего придумать..перерыл весь гугл..если у кого-то есть код или кто-то может написать этот код,пожалуйста помогите. вот то,что есть у меня: #include <iostream> #include <conio.h> const int n = 10; const int m = 10; int main () { setlocale(LC_ALL, "Russian");
Динамический двунаправленный список C++
Помогите! Нужно создать Динамический двунаправленный список и выполнить операцию: Добавление элемента в середину списка после указанного значения. Буду признательна материально.
C++ Одномерное случайное блуждание. Пьяный пешеход Как реализовать одномерное движение пьяного пешехода? А точнее переведите с паскаля на С++ пожалуйста)) Само задание (1. Одномерное случайное блуждание. Составьте модель определения расстояния, на которое уда- лится пешеход за M=20 шагов.) (* ni - число испытаний *) (* p – вероятность шага вправо *) (* n - число шагов *) x1:=0; x2:=0; https://www.cyberforum.ru/ cpp-beginners/ thread1255008.html
C++ Какую строчку кода надо дописать, чтобы вывелось хоть что нибудь в консоль? Добрый день, уважаемые форумчане! Помогите вывести результат программы в консоль. // Дописать всего одну строчку кода, чтобы следующая программа вывела на консоль хотя бы // что-нибудь … #include <iostream> int inp; template <class T> T f(T x) { https://www.cyberforum.ru/ cpp-beginners/ thread1255000.html C++ Типы шаблонов и перегрузка - в чем ошибка компиляции?
Добрый день! Есть класс template <class T> class Cls { void m1(T& val) {} void m1(const T& val) {}
C++ Параллельное чтение из txt файлов Понадобилось воспользоваться параллельным чтением n текстовых файлов. Как можно реализовать? https://www.cyberforum.ru/ cpp-beginners/ thread1254950.html C++ Получить имя обьекта из enum у меня есть клас SoundDevice в нем 2 указателя на объекты player и recorder. class SoundDevice{ Player *player; Recorder *recorder; }; Вместе они работать не могут, поэтому, чтобы постоянно не вызывать флаги статуса я создал: https://www.cyberforum.ru/ cpp-beginners/ thread1254936.html
C++ Как сложить два float-а, имея их представление в виде массива байт?
Здравствуйте. Нужна помощь. Я храню float числа в виде массива 4-х байтов. Подскажите как не переводя массив обратно во float, складывать эти числа. Оперируя только их байтами.
C++ Какие есть хитрости и трюки, уменьшающие размер кода и увеличивающие быстродействие https://www.cyberforum.ru/ cpp-beginners/ thread1254901.html
скажите какие есть хитрости и трюки в языкe c++ уменьшающие размер кода и увеличивающие быстродействие например тернарный оператор (x>y)?x:y; и и булевая return a==b;
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
12.09.2014, 15:42  [ТС] 0

Heap corruption при вызове деструктора для char* - C++ - Ответ 6600208

12.09.2014, 15:42. Показов 2712. Ответов 26
Метки (Все метки)

Ответ

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
#include <iostream>
#include <fstream>
 
using namespace std;
 
const size_t size = 100;
 
class town //класс населенный пункт
{
private:
    char* name; //название
    char* getname() { return name; }
    double latitude; //широта
    double longitude; //долгота
    char** transport; //виды общественного транспорта
    size_t transport_count; //количество видов общественного транспорта
public:
    //конструктор без параметров
    town()
    {
        name = new char[100];
        *name = 0;
        population = 0;
        latitude = 0.0;
        longitude = 0.0;
        transport_count = 0;
    }
    //конструктор с параметром задающим название
    town(char* _name)
    {
        name = new char[strlen(_name)];
        strcpy(name, _name);
        population = 0;
        latitude = 0.0;
        longitude = 0.0;
        transport_count = 0;
    }
    //конструктор с параметрами задающими все поля
    town(char* _name, size_t _population, double _latitude, double _longitude, char** _transport, size_t _transport_count)
    {
        name = new char[strlen(_name)];
        strcpy(name, _name);
        population = _population;
        latitude = _latitude;
        longitude = _longitude;
        transport_count = _transport_count;
        transport = new char*[transport_count];
        for (int i = 0; i < transport_count; i++)
        {
            transport[i] = new char[strlen(_transport[i])];
            strcpy(transport[i], _transport[i]);
        }
    }
    //деструктор
    ~town()
    {
        delete[] name;
        population = 0;
        latitude = 0.0;
        longitude = 0.0;
        if (transport_count)
        {
            for (int i = 0; i < transport_count; i++)
                delete[] transport[i];
            delete[] transport;
        }
        transport_count = 0;
    }
    //метод Input выполняет ввод данных из файла
    bool Input()
    {
        char *filename = new char[100]; //имя файла
        char *tmp = new char[100], *str = new char[100];
        cout << "filename: "; //запрос имени файла
        cin >> filename; //чтение имени файла из потока
        strcpy(tmp, "input\\");
        strcat(tmp, filename); //добавление папки в которой лежит файл
        ifstream stream(tmp); //открытие потока
        if (!stream.is_open()) return false; //если поток не открылся выход
 
        //читаю название
        stream.getline(str, 100);
        sscanf(str, "name=%s", name);
 
        //читаю население
        stream.getline(str, 100);
        sscanf(str, "population=%d", &population);
 
        //читаю широту
        stream.getline(str, 100);
        sscanf(str, "latitude=%lf", &latitude);
 
        //читаю долготу
        stream.getline(str, 100);
        sscanf(str, "longitude=%lf", &longitude);
 
        //читаю виды транспорта
        stream.getline(str, 100);
        sscanf(str, "transport=%s", tmp);
        memset(str, 0, 100);
        strcpy(str, tmp);
        char* _tmp = str;
        while (char* pos = strchr(_tmp, ','))
        {
            size_t index = 0;
            memset(tmp, 0, 100);
            for (; _tmp < pos; _tmp++)
                tmp[index++] = (*_tmp);
            char** transport_temp = new char*[++transport_count];
            for (int i = 0; i < transport_count; i++)
            {
                transport_temp[i] = new char[100];
                if (transport_count - 1 > 0)
                    if (i < transport_count - 1)
                        strcpy(transport_temp[i], transport[i]);
            }
            strcpy(transport_temp[transport_count - 1], tmp);
            if (transport_count - 1) delete[] transport;
            transport = transport_temp;
            memset(tmp, 0, 100);
            _tmp = pos + 1;
        }
        if (*_tmp)
        {
            size_t index = 0;
            memset(tmp, 0, 100);
            for (; _tmp < strchr(str, 0); _tmp++)
                tmp[index++] = (*_tmp);
            char** transport_temp = new char*[++transport_count];
            for (int i = 0; i < transport_count; i++)
            {
                transport_temp[i] = new char[100];
                if (transport_count - 1 > 0)
                    if (i < transport_count - 1)
                        strcpy(transport_temp[i], transport[i]);
            }
            strcpy(transport_temp[transport_count - 1], tmp);
            if (transport_count - 1) delete[] transport;
            transport = transport_temp;
        }
    }
    //метод Output печатает на экране данные класса
    bool Output()
    {
        cout << "name=" << name << "\n";
        cout << "population=" << population << "\n";
        cout << "latitude=" << latitude << "\n";
        cout << "longitude=" << longitude << "\n";
        cout << "transport=";
        for (int i = 0; i < transport_count; i++)
        {
            if (i < transport_count - 1)
                cout << transport[i] << ",";
            else
                cout << transport[i];
        }
        cout << "\n\n";
        return true;
    }
protected:
    size_t population; //количество жителей
    size_t getpopulation() { return population; }
};
 
int main()
{
    setlocale(LC_ALL, "RUSSIAN");
 
    //использование конструктора по умолчанию
    town a;
    cout << "использование конструктора по умолчанию" << endl << endl;
    a.Output();
    system("pause");
    system("cls");
 
    //использование конструктора с параметром задающим название
    town b("Пенза");
    cout << "использование конструктора с параметром задающим название" << endl << endl;
    b.Output();
    system("pause");
    system("cls");
 
    //использование конструктора с параметрами задающими все поля
    char** transport;
    transport = new char*[2];
    transport[0] = "автобусы";
    transport[1] = "тролейбусы";
    cout << "использование конструктора с параметрами задающими все поля" << endl << endl;
    town c("Пенза", 517311, 53.19, 45.00, transport, 2);
    c.Output();
    system("pause");
    system("cls");
 
    c.~town();
 
    //использование массива экземпляров класса с заполнением из файла
    const size_t size = 3;
    town* d = new town[size];
    for (int i = 0; i < size; i++)
    {
        cout << "использование массива экземпляров класса с заполнением из файла" << endl << endl;
        d[i].Input();
        cout << endl;
        d[i].Output();
        system("pause");
        system("cls");
    }
    delete[] d;
 
    return cin.get();
}


Вернуться к обсуждению:
Heap corruption при вызове деструктора для char* C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2014, 15:42
Готовые ответы и решения:

Ошибка "*.exe вызвал срабатывание точки останова" и "HEAP CORRUPTION" при вызове деструктора программой
Здравствуйте! Сделал простенькое упражнение на указатели, но программа выдает названные ошибки. ...

Ошибка при вызове деструктора (при вызове delete в деструкторе)
Не могу найти ошибку, при вызове деструктора от класса, который был создан при помощи конструктора...

Heap corruption detected при удалении динамического массива
mystring.cpp - здесь происходит ошибка в функции MyString::operator на строке delete s. В чем тут...

Heap corruption detected при добавлении нового элемента в однонаправленный список
Метод add на вход получает строку, затем ищет в списке такой элемент и добавляет новое звено...

26
12.09.2014, 15:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2014, 15:42
Помогаю со студенческими работами здесь

Посчитать значения функции Y для диапазона X (Heap corruption detected)
Задача: посчитать значения функции Y для диапазона X(от a до b) по формуле. Реализовать ввод данных...

Ошибка при вызове деструктора
Подскажите, что не так с этим деструктором? Просто выдает ошибку. Если его убираю то все идет норм....

Ошибка при вызове деструктора
По окончании программы выдает ошибку #include &lt;string.h&gt; #include &lt;iostream&gt; using namespace...

Ошибка при вызове деструктора
Здравствуйте, помогите разобраться с проблемой, она довольно распространенная и на форуме куча...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru