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

Shared_str реализация - На выходе из деструктора падает программа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как получить указатель на функцию http://www.cyberforum.ru/cpp-beginners/thread1241733.html
Здравствуйте! Подскажите, как получить указатель на функцию? Амперсанд не помогает. class Menu{ private: // Создал указатель на функцию, вроде, верно. void(*m_PrintStyle) (const int&, vector<string>);
C++ Шифрование файлов и папок с установкой на них пароля Привет. Мне нужно зашифровать файл/папку и поставить пароль на нее/него. Что посоветуете? Заранее спасибо. P.S. так как шифрование тема сложная, подумываю о XOR. Вопрос: как лучше хранить пароль, и как зашифровать всю папку, чтобы в итоге вышел один файл? Спасибо. http://www.cyberforum.ru/cpp-beginners/thread1241732.html
Оцените тетрис C++
Написано коряво, но это первый блин. Мне бы очень хотелось его дошлифовать до красивого внешнего и внутреннего содержания. Если участники форума мне в этом помогут, буду признателен. Test_Wi32.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "Test_Wi32.h" #define MAX_LOADSTRING 100 // Global Variables:
Проверить, имеют ли три введенных пользователем числа одинаковую четность C++
Проверить, имеют ли три введенных пользователем числа одинаковую четность #include<iostream.h> main() { int b,d,x; cout<<"enter b "; cin>>b; cout<<"enter d ";
C++ Разобрать строку кода http://www.cyberforum.ru/cpp-beginners/thread1241641.html
Часть программы, если что // Game engine struct Piece { struct { unsigned short s; } shape; int x : 8, y : 8, color : 14; unsigned r : 2; template<typename T> // walkthrough operator
C++ Нахождение ближайших точек методом декомпозиции - не понятен алгоритм Преподаватель задал решить задачу по нахождению ближайших точек методом декомпозиции, но мне не понятен алгоритм, гугл не дал мне необходимой информации, объясните пожалуйста. подробнее

Показать сообщение отдельно
DrOffset
7092 / 4233 / 950
Регистрация: 30.01.2014
Сообщений: 7,008
14.08.2014, 17:04
MishaMoix, Откомментил что происходит:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main(int argc, char* argv[])
{
    // 0. Создается объект "а"
    shared_ptrMy a(new Object()); //1. внутри создается объект класса Storage, st указывает на него
    shared_ptrMy b; //2. создается объект "b" - внимание указатель st в нем неинициализирован!
    b = a; // 3. выполняется operator=
    // 4. у st объекта "b" вызывается метод Copy - это уже неверно, 
    // т.к. st в "b" не содержит правильного адреса
    // но в моем случае это прокатило и программа пошла дальше, 
    // хотя могло и уже здесь упасть (UB есть UB)
    // Далее выполняется присваивание значения st из "а" значению st из "b"
    // теперь у нас два объекта "a" и "b", которые указывают на один и тот же экземпляр класса Storage
    // Затем идут вызовы деструкторов, деструктор "b" освобождает память Storage
    // Деструктор "a" пытается еще раз освободить память Storage, но т.к.
    // она уже освобождена, то это приводит к падению  
 
    return 0;
}
Вывод - полностью пересмотреть подход. В таком виде это работать не будет.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru