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

Работа с памятью, деструкторы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Fatility Fail. ini файлы и 0xc0000005 http://www.cyberforum.ru/cpp-beginners/thread1196567.html
И снова здрасте! При вводе Логина (Не говоря уже о пароле) выдает ошибку """"Необработанное исключение в "0x00011e94" в "iniFile.exe": 0xC0000005: Нарушение прав доступа при записи "0x00015350"."""" #include <Windows.h> #include <iostream> using namespace std; char *IniRead(char *filename, char *section, char *key); bool IniWrite(char *filename, char *section, char *key, char *data);
C++ Рекурсивная подпрограмма печати чисел из файла Написать рекурсивную подпрограмму, вводящую из файла последовательность вещественных чисел, которая выдает на экран вначале отрицательные, а затем - неотрицательные члены последовательности. Массивы и циклы не использовать Помогите, пожалуйста http://www.cyberforum.ru/cpp-beginners/thread1196549.html
Непонятная логика работы оператора new C++
Нужно было освежить в памяти работу с оператором new. Использую Microsoft Visual Studio 2010 Express. Сделал простой пример, чтобы все проверить и был шокирован: int test1 = *new int; int test2 = *new int; float *test3 = new float; char *test4 = new char; test4 = "khgsdlifgslfibsflihsp;oduhs;dogjnsd;obs;fousouhf;siugfspeufhbsp;ifbslibgskufgsolfdgslidfbslfsdlfsldfvsldf"; test3 = 0;
Составить программу для умножения дроби на дробь с использованием пользовательских функций C++
Помогите пожалуйста!) Даны две дроби A/B и C/D (A, B, C, D – натуральные числа). Составить программу для умножения дроби на дробь. Результат должен быть несократимой дробью.
C++ С++, передача массива в функцию и динамический массив http://www.cyberforum.ru/cpp-beginners/thread1196531.html
Привет, помогите пожалуйста переделать программку в динамический массив и с помощью передачи массива в функцию #include <conio.h> #include <stdio.h> #include <stdlib.h> int main() { clrscr(); unsigned i,j,n; int a,b;
C++ Шифрование RSA Доброго всем времени суток. Делаю курсовую работу по криптографии - реализация алгоритма RSA. Вот написал уже целый код, который работает при небольших значениях (их брал с вики). Использую такие данные: p=3557 q=2579 d=3 e=6111579 исходный_текст=111111, шифрованный текст получается 4051753, собственно и расшифровка происходит тоже верно. А вот когда уже беру числа из задания... подробнее

Показать сообщение отдельно
WebMacTep
 Аватар для WebMacTep
21 / 21 / 1
Регистрация: 03.10.2013
Сообщений: 128
02.06.2014, 15:50     Работа с памятью, деструкторы
Добрый день. Прочитал в учебнике, что следующий код (под спойлером) должен четыре раза освобождать 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
#include <iostream>
#include <cstring>
 
using namespace std;
 
class sample
{
    char *s;
public:
    sample();
    sample(const sample &ob);
    ~sample() { if(s) delete [] s; cout << "deleting s-memory\n"; }
    void show() { cout << s << "\n"; }
    void set(char *str);
    sample operator=(sample ob);
};
 
sample::sample()
{
    s = new char('\0');
}
 
sample::sample(const sample &ob)
{
    s = new char[strlen(ob.s) + 1];
    strcpy(s, ob.s);
}
 
void sample::set(char *str)
{
    s = new char[strlen(str) + 1];
    strcpy(s, str);
}
 
sample sample::operator=(sample ob)
{
    if(strlen(ob.s) > strlen(s))
    {
        delete [] s;
        s = new char[strlen(ob.s) + 1];
    }
    strcpy(s, ob.s);
    return *this;
}
 
sample input()
{
    char instr[80];
    sample str;
 
    cout << "enter a string: ";
    cin >> instr;
 
    str.set(instr);
    return str;
}
 
int main()
{
    sample ob;
    ob = input();
    ob.show();
    return 0;
}

Вывод у меня такой:
Код
enter a string: text
deleting s-memory
deleting s-memory
text
deleting s-memory
Что не так?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru