Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
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 нельзя было ввести буквы? Помогите плз
Эксперт по математике/физикеЭксперт С++
2048 / 1366 / 395
Регистрация: 16.05.2013
Сообщений: 3,506
Записей в блоге: 6
02.12.2014, 09:30 0

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

02.12.2014, 09:30. Показов 2344. Ответов 6
Метки (Все метки)

Ответ

Керра, конструктор копирования должен принимать константную ссылку:
C++
1
    MyString(const MyString &right);
иначе не будет работать к примеру такой простой код:
C++
1
2
3
4
5
6
MyString func(const char* s) {
    return MyString(s);
}
...
char s[] = "blablabla";
MyString s1 = func(s);
Аналогично для конструктора принимающего указатель на си строку. Ведь она может оказаться read-only.
А вот эти грабли еще страшнее:
C++
1
2
3
4
5
class MyString
{
public:
    MyString(unsigned int len = 0);
    char* operator[](int n) const;
Вот немного надуманный пример, но суть должна быть ясна:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cstring>
#include <cmath>
using std::cin;
using std::cout;
using std::endl;
class MyString
{
public:
    MyString(unsigned int len = 0);
    MyString(char *s);
    MyString(MyString &right);
    ~MyString();
    char* operator[](int n) const;
private:
    unsigned int length;
    char *str;
};
 
MyString::MyString(unsigned int len)
{
    length = len;
    str = new char[len+1];
}
 
MyString::MyString(char *s)
{
    cout << "Сюрпрайз! Я сработал\n";
    length = strlen(s);
    str = new char[length+1];
    strcpy(str, s);
}
 
MyString::~MyString()
{
    delete[] str;
}
 
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;
}
 
bool operator== (const MyString& s1, const MyString& s2) {
    return true;
}
 
int main() {
    MyString s1(10);
    MyString s2(10);
    if(s1 == s2[3])
        cout << "Ups!\n";
 
    return 0;
}


Мораль конструктор с одним агрументом сопровождайте ключевым словом explicit.

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

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
02.12.2014, 09:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2014, 09:30
Помогаю со студенческими работами здесь

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