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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Подсчитать число элементов, входящих в непрерывные последовательности отрицательных чисел http://www.cyberforum.ru/cpp-beginners/thread595590.html
ЗАДАЧА Задан одномерный массив Х вещественных чисел. Подсчитать число элементов, входящих в непрерывные последовательности отрицательных чисел, содержащие k и более элементов. помогите с програмным кодом...
C++ Некоректно работает функция pow Здравствуйте! Пользуюсь компилятором Code Blocks! Использовал в программе для возведения в степень функцию pow, и заметил что некоторую степень считает не правильно! А именно 10 во второй, четвертой, восьмой, девятой выдаёт результат на 1 меньше! Тоесть 99, 9999 и т.д! Подскажите пожалуйста, это проблема в компиляторе, или сама функция так не коректно работает везде ? http://www.cyberforum.ru/cpp-beginners/thread595569.html
Шаблон дерева. Найти элементы на заданной глубине C++
Задача: Разработать шаблон класса для работы с двоичным деревом поиска. Реализовать следующие действия добавление элемента в дерево; удаление элемента из дерева; обход дерева (для печати элементов и т.д.); поиск в дереве. Найти количество элементов на заданной глубине. Шаблон реализовала:
C++ Записать этот массив в бинарный файл одной записью (не в цикле)
Создать файл в блокноте с числами, например: 1.4 1.234 2.104 и т.д. Считывать этот файл в массив, который надо динамически расширять под каждое считанное число, пока файл не будет прочитан Записать этот массив в бинарный файл одной записью (не в цикле) Заранее спасибо!!!!
C++ Дано натуральное число n. Найти A1B1+A2B2+... http://www.cyberforum.ru/cpp-beginners/thread595536.html
Дано натуральное число 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++ Вычислить выражение Вычислить sh(x)=x+((x^3)/3!)+((x^5)/5!)+((x^7)/7!)... Есть ли какие-нибудь элементарные функции для степени и факториала? Чтобы просто в одно обозначение типа x^2(икс в квадрате) и fact(n). подробнее

Показать сообщение отдельно
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
04.06.2012, 02:05     Динамическая память (строки), деструктор
Привет. Бьюсь уже час, помогите разобраться.
Написал программу, в одной функции память выделил, в другой освобождаю. После выполнения программы вылетает ошибка (вложение)


понял что ошибка в деструкторе. но конкретнее? что конкретно не так делаю???
речь про класс alcohol ! fluid работает отлично (тоже странно, одинаковые же блин!)
help!

zad1.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
#pragma once
#include "stdafx.h"
 
class fluid {
protected:
    char *name; // имя
    double density; // плотность напитка
public:
    fluid(void);
    fluid(char *, double);
 
    ~fluid(void);
 
    void print(void); // функция печати
};
 
class alcohol:public fluid {
    double strength; // крепость
public:
    alcohol(void);
    alcohol(char *_name, double _density, double _str);
    alcohol(char *_name);
 
    ~alcohol(void);
 
    void print(void);
    void set_density(double _density);
    void set_strength(double _str);
};
zad2.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
#include "stdafx.h"
#include <iostream>
 
#include "zad1.h"
 
fluid::fluid(void) {
    name = new char[13];
    strcpy(name, "Без названия");
    density = 0.;
}
 
fluid::fluid(char *_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) {
    name = new char[13];
    strcpy(name, "Без названия\0");
    strength = 0;
    density = 0;
}
 
alcohol::alcohol(char *_name, double _density, double _str) {
    name = new char[strlen(_name)+1];
    density = _density;
    strength = _str;
    strcpy(name, _name);
}
 
alcohol::alcohol(char *_name) {
    name = new char[strlen(_name)+1];
    strcpy(name, _name);
 
    strength = 0;
    density = 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;}
main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include "zad1.h"
#include <iostream>
 
int main(void) {
    setlocale(LC_ALL, "Russian");
    fluid A("Water", 10.);
    A.print();
 
    alcohol B;
    B.print();
    return 0;
}
Извиняюсь кода спойлера не нашел.
Да. Не важно какой конструктор вызывать, результат один и тот же.
Миниатюры
Динамическая память (строки), деструктор  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru