Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ C++ Ввести матрицу а потом выдать на печать произведение строки на столбец C++ Ввести матрицу а потом выдать на печать произведение строки на столбец. Подскажите, пожалуйста, как это нужно сделать? https://www.cyberforum.ru/ cpp-beginners/ thread1316382.html В одномерном массиве найти количество элементов, сумму, провести сортировку C++
Здравствуйте. Помогите исправить ошибки в программе. Задача: В одномерном массиве, состоящем из вещественных элементов, вычислить: 1) количество элементов массива, лежащих в диапазоне от А до В; (вот тут точно ошибка. необходима другая формула, потому что при вводе, допустим 7 и 9, программа выведет 2, хотя элемент только 1. Также, нужно предусмотреть случай, если получится(или будет введено)...
C++ Вывести таблицу значений функции #include <stdio.h> #include <math.h> #include <stdlib.h> int main() { double x = 0, xStart = 3, xEnd = 15, xStep = 0.35, y = 0; printf("\t TABLE OF VALUES OF FUNCTIONS\n\n"); for(x = xStart; x <= xEnd; x += xStep) { if (x < 10.0) y = log(pow(x,2.0)); https://www.cyberforum.ru/ cpp-beginners/ thread1316376.html C++ Даны точки на плоскости: расположить их так, чтобы они образовывали вершины выпуклого многоугольника https://www.cyberforum.ru/ cpp-beginners/ thread1316369.html
На плоскости заданы N точек своими декартовыми координатами. Расположить эти точки в таком порядке, чтобы они образовывали вершины какого-либо выпуклого многоугольника.
C++ Сформировать файл из чисел последовательности
Dev c++ 5.4.2 код Сформировать файл из чисел последовательности (–1)k*0.3k/(k + 1). Найти произведение компонента файла. Давайте осмысленные названия темам
C++ Из pascal в c++, найти наибольший элемент по условию https://www.cyberforum.ru/ cpp-beginners/ thread1316365.html
Помогите перевести код из паскаля в c++ const n = 7; m = 8; var a: array of integer; max, tmp: integer; i, j, imax, jmax: byte; begin
C++ Заполнение массивов Зигзагом Добрый вечер, помогите пожалуйста c алгоритмом заполнения массива зиг-загом, посмотрел много тем не одна не помогла, не могу разобраться в общем. "Задание во увлажнении". Спасибо! https://www.cyberforum.ru/ cpp-beginners/ thread1316362.html C++ Обработка изображений представленных в позитиве/негативе
Всем добрый вечер! Подскажите пожалуйста, где можно посмотреть русскоязычные примеры для открытия и обработки изображений типа позитив/негатив. Суть задачи такова: необходимо открыть "серое" изображение, произвести его дискретизацию и квантование по шкале серого цвета, записать полученные значения интенсивностей яркости пикселей в матрицу, а потом произвести построение гистограммы с нахождением...
C++ Структура "Студент" https://www.cyberforum.ru/ cpp-beginners/ thread1316349.html
Описать структуру с именем STUDENT, содержащую следующие поля: NAME – фамилия и инициалы; GROUP – номер группы; SES – успеваемость (массив из пяти элементов – оценки по четырем предметам). Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив STUD (не менее чем из 5 элементов), состоящий из элементов типа STUDENT; записи необходимо упорядочить по алфавиту;...
C++ Выяснить, имеются ли в строке запятая и двоеточие по-соседству https://www.cyberforum.ru/ cpp-beginners/ thread1316343.html
нужен код в dev c++ Выяснить имеются ли в строке соседствующих символов запятая и двоеточие (",:")
C++ Скопировать текст из одного файла в другой, добавляя порядковый номер строки и количество символов в ней
Помогите с задачей, пожалуйста!!!:) спасибо заранее! Описать функцию Lines(FileIn, FileOut), которая считывает из входного файла FileIn литеры и построчно записывает их в текстовый файл FileOut, вставляя в начало каждой строки ее порядковый номер (он должен занимать 4 позиции и пробел) и в конец строки число, показывающее количество символов в этой строке.
C++ Удалить все буквы из строки https://www.cyberforum.ru/ cpp-beginners/ thread1316339.html
Здравствуйте, есть sting x и в ней могут быть, а могут не быть буквы и цифры. Нужно удалить все бувы, оставить только цифры или как сделать так, чтобы при cin>>x в переменную int нельзя было ввести буквы? Помогите плз
1296 / 469 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
0

Heap corruption detected при удалении динамического массива - C++ - Ответ 6926491

01.12.2014, 20:23. Показов 2344. Ответов 6
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
mystring.cpp - здесь происходит ошибка в функции MyString::operator[] на строке delete[] s. В чем тут может быть дело?
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
#include "mystring.h"
#include <string.h>
#include <iostream>
using namespace std;
 
MyString::MyString(unsigned int len)
{
    length = len;
    str = new char[len+1];
}
 
MyString::MyString(char *s)
{
    length = strlen(s);
    str = new char[length+1];
    strcpy(str, s);
}
 
MyString::MyString(MyString &right)
{
    length = right.length;
    str = new char[length + 1];
    strcpy(str, right.str);
}
 
MyString::~MyString()
{
    delete[] str;
}
 
void MyString::Clear()
{
    delete[] str;
    length = 0;
    str = new char[1];
    str[0] = '\0';
}
 
char* MyString::GetChar() const
{
    return str;
}
 
unsigned int MyString::GetLength() const
{
    return length;
}
 
void MyString::SetStr(const char *s)
{
    strncpy(str, s, length+1);
}
 
ostream& operator<<(ostream &out, const MyString &right)
{
    out << right.GetChar();
    return out;
}
 
MyString operator+(MyString &left, MyString &right)
{
    MyString res(left.GetLength() + right.GetLength());
    char *newstr = new char[left.GetLength() + right.GetLength() + 1];
    strcpy(newstr, left.GetChar());
    strcat(newstr, right.GetChar());
    res.SetStr(newstr);
    delete[] newstr;
    return res;
}
 
MyString operator+(MyString &left, const char *right)
{
    MyString res(left.GetLength() + strlen(right));
    char *newstr = new char[left.GetLength() + strlen(right)];
    strcpy(newstr, left.GetChar());
    strcat(newstr, right);
    res.SetStr(newstr);
    delete[] newstr;
    return res;
}
 
MyString operator+(const char *left, MyString &right)
{
    MyString res(strlen(left) + right.GetLength());
    char *newstr = new char[strlen(left) + right.GetLength()];
    strcpy(newstr, left);
    strcat(newstr, right.GetChar());
    res.SetStr(newstr);
    delete[] newstr;
    return res;
}
 
char* MyString::operator[](int n) const
{
    char *s = new char[strlen(str)], *word = new char[strlen(str)], *cur;
    int curn = 0;
    strcpy(s, str);
    cur = strtok(s, " ");
    while (curn < n && cur != NULL)
    {
        cur = strtok(NULL, " ");
        curn++;
    }
    if (curn == n)
        strcpy(word, cur);
    else
        word[0] = '\0';
    delete[] s;
    return word;
}
 
char* MyString::operator()(int b, int n) const
{
    char *newstr = new char[n+1];
    strncpy(newstr, str + b, n);
    newstr[n] = '\0';
    return newstr;
}
 
char** MyString::operator%(int n) const
{
    char *newstr = new char[length + 1];
    strcpy(newstr, str);
    char **wordsarray = new char*[n];
    wordsarray[0] = strtok(newstr, " ");
    int i;
    for (i = 1; wordsarray[i - 1] != NULL && i < n; i++)
        wordsarray[i] = strtok(NULL, " ");
    if (wordsarray[0] == NULL)
        cout << "V stroke net slov!\n";
    else if (wordsarray[i - 1] == NULL)
    {
        cout << "V stroke menishe slov!\n";
        for (; i < n; i++)
            wordsarray[i] = NULL;
    }
    else if (strtok(NULL, " ") != NULL)
        cout << "V stroke bolishe slov!\n";
    return wordsarray;
}
mystring.h:
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
#pragma once
#include <iostream>
using namespace std;
 
class MyString
{
public:
    MyString(unsigned int len = 0);
    MyString(char *s);
    MyString(MyString &right);
    ~MyString();
 
    void Clear();
    unsigned int GetLength() const;
    char* GetChar() const;
    void SetStr(const char *s);
 
    char* operator[](int n) const;
    char* operator()(int b, int n) const;
    char** operator%(int n) const;
 
private:
    unsigned int length;
    char *str;
};
 
ostream& operator<<(ostream &out, const MyString &right);
MyString operator+(MyString &left, MyString &right);
MyString operator+(MyString &left, const char *right);
MyString operator+(const char *left, MyString &right);
main.cpp:
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
// Создайте класс Строка с обязательными член-данными: длина строки, указатель на строку (строка хранится в динамически выделенной памяти).
// Обязательные методы: конструктор по заданной длине строки, конструктор по заданной строке, конструктор по другому объекту класса Строка,
// конструктор копирования, очистка строки, вывод строки.
// Перегрузить операторы: + (конкатенация), [] - выдача слова, () - выдача подстроки, % - разделение строки на слова (возвращать массив слов
// и предусмотреть сообщения: слишком много слов, нет слов, слишком длинное слово).
 
#include "mystring.h"
#include <iostream>
using namespace std;
 
int Menu()
{
    int vybor;
    system("cls");
    cout << "1 - Vyvesti stroki\n"
        << "2 - Konkatenatsia\n"
        << "3 - Vydati slovo po indexu\n"
        << "4 - Vydati podstroku\n"
        << "5 - Razdeliti stroku na slova\n"
        << "6 - Ochistiti stroki\n"
        << "0 - Vyiti iz programmy\n"
        << "Vash vybor: ";
    cin >> vybor;
    cout << endl;
    return vybor;
}
 
int main()
{
    char s[100];
    cout << "Vvedite pervuiu stroku: ";
    gets(s);
    MyString str1(s);
    cout << "Vvedite vtoruiu stroku: ";
    gets(s);
    MyString str2(s);
 
    int n, k;
    char **words;
 
    while (true)
    {
        switch (Menu())
        {
        case 1: cout << str1 << endl << str2 << endl; break;
        case 2: cout << str1 + str2 << endl; break;
        case 3:
            cout << "Vvedite indeks slova iz pervoi stroki (indeksy s 0): ";
            cin >> n;
            cout << str1[n] << endl
                << "Vvedite indeks slova iz vtoroi stroki (indeksy s 0): ";
            cin >> n;
            cout << str2[n] << endl;
            break;
        case 4:
            cout << "Vvedite nachalo podstroki v pervoi stroke: ";
            cin >> n;
            cout << "Vvedite kolichestvo simvolov v podstroke pervoi stroki: ";
            cin >> k;
            cout << str1(n, k) << endl;
            cout << "Vvedite nachalo podstroki vo vtoroi stroke: ";
            cin >> n;
            cout << "Vvedite kolichestvo simvolov v podstroke vtoroi stroki: ";
            cin >> k;
            cout << str2(n, k) << endl;
            break;
        case 5:
            cout << "Na skoliko slov razdeliti pervuiu stroku: ";
            cin >> n;
            words = str1 % n;
            for (int i = 0; i < n; i++)
                if (words[i] != NULL)
                    cout << words[i] << endl;
                else
                    break;
            cout << "Na skoliko slov razdeliti vtoruiu stroku: ";
            cin >> n;
            words = str1 % n;
            for (int i = 0; i < n; i++)
                if (words[i] != NULL)
                    cout << words[i] << endl;
                else
                    break;
            break;
        case 6:
            str1.Clear();
            str2.Clear();
            break;
        case 0: return 0;
        }
        system("pause");
    }
}
Добавлено через 1 час 1 минуту
актуально

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

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

HEAP CORRUPTION DETECTED
Не могу понять, почему выдает такую ошибку, когда я освобождаю память: &quot;HEAP CORRUPTION DETECTED:...

Heap Corruption detected (
что не правильно? запускаю и ошибка вылетает как на предидущей картинке template&lt;typename TT&gt;...

Heap corruption detected
Ошибка возникает после отработки программы Заголовочный файл: #pragma once #include&lt;iostream&gt;...

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

Heap corruption detected
При попытке очистить память выдает &quot;Heap corruption detected&quot;. Помогите пожалуйста( //...

HEAP CORRUPTION DETECTED
Доброго времени суток, господа. Только начал изучать ООП и столкнулся с проблемой. Нужно...

Heap corruption detected
Heap corruption на строке 93 при первом же выполнении цикла. Из-за чего? #include &lt;locale.h&gt; //...

heap corruption detected
имеется класс CStr - строка, в нём есть конструктор CStr CStr::CStr(char *s) { length = 0;...

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