Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Подсчитать число элементов, входящих в непрерывные последовательности отрицательных чисел ЗАДАЧА Задан одномерный массив Х вещественных чисел. Подсчитать число элементов, входящих в непрерывные последовательности отрицательных чисел, содержащие k и более элементов. помогите с програмным кодом... https://www.cyberforum.ru/ cpp-beginners/ thread595590.html Некоректно работает функция pow C++
Здравствуйте! Пользуюсь компилятором Code Blocks! Использовал в программе для возведения в степень функцию pow, и заметил что некоторую степень считает не правильно! А именно 10 во второй, четвертой, восьмой, девятой выдаёт результат на 1 меньше! Тоесть 99, 9999 и т.д! Подскажите пожалуйста, это проблема в компиляторе, или сама функция так не коректно работает везде ?
C++ Шаблон дерева. Найти элементы на заданной глубине https://www.cyberforum.ru/ cpp-beginners/ thread595565.html
Задача: Разработать шаблон класса для работы с двоичным деревом поиска. Реализовать следующие действия добавление элемента в дерево; удаление элемента из дерева; обход дерева (для печати элементов и т.д.); поиск в дереве. Найти количество элементов на заданной глубине. Шаблон реализовала:
C++ Записать этот массив в бинарный файл одной записью (не в цикле) Создать файл в блокноте с числами, например: 1.4 1.234 2.104 и т.д. Считывать этот файл в массив, который надо динамически расширять под каждое считанное число, пока файл не будет прочитан Записать этот массив в бинарный файл одной записью (не в цикле) Заранее спасибо!!!! https://www.cyberforum.ru/ cpp-beginners/ thread595552.html
C++ Дано натуральное число n. Найти A1B1+A2B2+...
Дано натуральное число n. Найти A1B1+A2B2+...AnBn,где A1=B1=1;Ak=1/2*(sqrt(B(k-1))+1/2*A(k-1));Bk=2*(A(k-1))^2;k=1,2...n.
C++ Вычислить выражение https://www.cyberforum.ru/ cpp-beginners/ thread595535.html
Вычислить sh(x)=x+((x^3)/3!)+((x^5)/5!)+((x^7)/7!)... Есть ли какие-нибудь элементарные функции для степени и факториала? Чтобы просто в одно обозначение типа x^2(икс в квадрате) и fact(n).
C++ Метод пузырька https://www.cyberforum.ru/ cpp-beginners/ thread595521.html
реализовать на языке С++ сортировку одномерного массива методом «пузырька», методом вставки, методом выбора.
C++ Ошибка при работе с массивами char
Задание: написать функцию для сложения целых двоичных чисел. Слагаемые должны иметь тип unsigned char. Вот что получилось, но после ввода чисел - программа вылетает, где ошибка? #include "stdafx.h" #include <iostream> using namespace std; class Long { public:
C++ Чем опасны программы написанные на C++ чем опасны программы написанные на C++? Если можно, то с комментарием https://www.cyberforum.ru/ cpp-beginners/ thread595514.html C++ Построения графиков функции Разработать программу для построения графиков функции, заданных в таблице 1. Считать из файла, указанного пользователем значения абсциссы Х (не менее 20 значений), произвести сортировку Х по возрастанию, рассчитать для них значения ординаты У, записать результат вычисления в новый файл в формате: Х1 У1а У1в Х2 У2а У2в ... Функции заданы с помощью табл. 1. Вариант задается... https://www.cyberforum.ru/ cpp-beginners/ thread595494.html
C++ Класс для работы с матрицами
Разработать класс обеспечивающий представление матрицы произвольного размера с возможностью изменения числа строки столбцов,вывода на экран подматрицы любого размера и все матрицы.Значения эл-в матрицы целочисленные,заполняются матрицы с помощью генератора случайных чисел. Методы: 1-поэлементное сложение обьектов классса(матриц одинаковой размерности) 2-вычитание обьектов класса 3-определение...
C++ Дан символьный файл . Добавить в его конец символы (если это необходимо, использовать дополнительный файл ) Дан символьный файл . Добавить в его конец символы (если это необходимо, использовать дополнительный файл ). https://www.cyberforum.ru/ cpp-beginners/ thread595458.html
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
04.06.2012, 15:39 0

Динамическая память (строки), деструктор - C++ - Ответ 3123251

04.06.2012, 15:39. Показов 1967. Ответов 9
Метки (Все метки)

Ответ

Ммм, понял, когда вызывается конструктор alcohol, сначала вызывается конструктор предка, там выделяется память, на нее указывает name, потом уже в конструкторе alcohol ещё раз выделяется память, и name уже указывает на другой участок памяти. Итого выделили два участка, на один указатель потеряли => память не освободили. Это раз. И два: дважды освобождение памяти по указателю name (вот здесь, видимо, и падало), сначала в деструкторе alcohol, потом - в fluid. Так работает:
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
#include <iostream>
#include <cstring>
 
 
class fluid {
protected:
    char *name; // имя
    double density; // плотность напитка
public:
    fluid(void);
    fluid(char const*, double);
 
    ~fluid(void);
 
    void print(void); // функция печати
};
 
class alcohol:public fluid {
    double strength; // крепость
public:
    alcohol(void);
    alcohol(char const* _name, double _density, double _str);
    alcohol(char const* _name);
 
    ~alcohol(void);
 
    void print(void);
    void set_density(double _density);
    void set_strength(double _str);
};
 
 
fluid::fluid(void) {
    name = new char[13];
    strcpy(name, "Без названия");
    density = 0.;
}
 
fluid::fluid(char const* _name, double _density) {
    name = new char[strlen(_name)+1];
    density = _density;
 
    strcpy(name, _name);
}
 
fluid::~fluid(void) {
    delete[] name;
}
 
void fluid::print(void) {
    std::cout << std::endl << "Напиток: " << name << ", плотность: " << density << std::endl;
}
 
alcohol::alcohol(void) : fluid("Без названия", 0), strength(0) {
    //name = new char[13];
    //strcpy(name, "Без названия"); //\0");
    //strength = 0;
    //density = 0;
}
 
alcohol::alcohol(char const* _name, double _density, double _str) : fluid(_name, _density), strength(_str) {}
 
alcohol::alcohol(char const* _name) : fluid(_name, 0), strength(0) {}
 
alcohol::~alcohol(void) {
    //delete[] name;
}
 
void alcohol::print(void) {
    std::cout << std::endl << "Напиток: " << name << ", плотность: " << density << ", крепость: "<< strength << std::endl;
}
 
void alcohol::set_density(double _density) {density = _density;}
 
void alcohol::set_strength(double _str) {strength = _str;}
 
 
int main() {
   fluid A("Water", 10.);
   A.print();
 
   alcohol B;
   B.print();
}
http://liveworkspace.org/code/... 72cb1c7db8
И да, у С-шных строк тип - const char* (указатель на константу).

Вернуться к обсуждению:
Динамическая память (строки), деструктор C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2012, 15:39
Готовые ответы и решения:

Деструктор и динамическая память
Вечер добрый, форумчане. Создал класс с матрицами, динамически выделил память. Конструктор копии...

Динамическая память и строки
Подскажите пожалуйста , как выделить динамическую память под строку , а потом освободить её? это...

строки и динамическая память
определить количество слов в строке, начинающихся с заданной пары символов. Строка размещается в...

Строки, динамическая память, обрезка строк
Доброго времени суток... Вот задача на дом 2. Показать на экран с m по n символов строки,...

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

Азы: статическая память, динамическая память, автоматическая память
столько раз приходистя возвращаться к началу, и все благодаря моим преподавателям, которые не...

Статическая память,Динамическая память.
a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные...

деструктор не может очистить память
Всем привет. Ребят, проблема такая. Есть класс который предназначен для хранения двумерной матрицы....

Ругается на деструктор (выделял динамически память). Почему?
Вот код: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; class...

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