Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 0 / 1
Регистрация: 28.11.2021
Сообщений: 18
1

Проблемка с unique_ptr на простом примере

11.12.2022, 18:26. Показов 246. Ответов 3

Author24 — интернет-сервис помощи студентам
Здравствуйте, друзья. Я новичок с C++, прошу простить. Решил использовать unique_ptr для работы со своей программой, потому попробовал поиграться с ним на простом примере(код ниже). Он падает с ошибкой сегментирования (invalid delete). Valgrind ругается на деструктор по умолчанию класса B, но я не совсем, к сожалению, догоняю, где возникает проблема

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
#include <iostream>
#include <vector>
#include <memory>
using namespace std;
 
class A{
private:
    int a;
public:
    A(int value):a(0){
        a = value;
    }
    void set(int value){
        a = value;
    };
    int get(){
        return a;
    }
};
 
class B{
private:
    vector<unique_ptr<A>> pointers;
public:
    void add(A& a){
        unique_ptr<A> ptr(&a);
        pointers.push_back(move(ptr));
    };
    int get(int i){
        return pointers[i]->get();
    }
};
int main(){
    A a(5);
    B b;
    b.add(a);
    cout<<"\nfinish\n";
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2022, 18:26
Ответы с готовыми решениями:

Подключение к БД в простом примере
Только начинаю разбираться с ASP.NET MVC, для начала делаю пример отсюда...

ошибка в простом примере
Помогите определить в чем ошибка пожалуйста.

ошибка в простом примере
обьясните пожалуйста, как правильно вставить код площади прямоугольного треугольника по двум...

Управление потоками на простом примере
Покажите на простом примере как это делается. Создаю простую программу, которая выводит на экран...

Динамическое обновление контента на простом примере
Друзья, помогите пожалуйста. Необходимо динамически показывать изменения на сайте. Изучаю...

3
Неэпический
18105 / 10692 / 2062
Регистрация: 27.09.2012
Сообщений: 26,918
Записей в блоге: 1
11.12.2022, 18:28 2
А зачем вы адрес автоматической переменной в unique_ptr положили?
2
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
11.12.2022, 18:29 3
Лучший ответ Сообщение было отмечено caelum как решение

Решение

caelum, чтобы засовывать "что-то" в unique_ptr с deleter-ом по умолчанию, это "что-то" должно быть создано в куче. А у вас нет этого.
1
1 / 0 / 1
Регистрация: 28.11.2021
Сообщений: 18
11.12.2022, 18:36  [ТС] 4
Протупил, всем спасибо
0
11.12.2022, 18:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2022, 18:36
Помогаю со студенческими работами здесь

Разобрать xml на конкретном простом примере
Пытался разобрать xml признаюсь с jqueri не сильно знаком вот что пытался...

Ошибка #ЗНАЧ! в простом примере с .Offset(0, 0)
Здравствуйте! Уже 2 часа голову ломаю не получается простой пример работы с данными ячеек. Public...

Застрял на самом простом примере SASS
Как и писал в теме, застрял на самом простом примере, вернее на самом первом примере. В...

Делегаты и их применение, желательно на простом примере
Я читаю книгу М. Фленов - Библия C# и дошел до темы &quot;Делегат&quot; но не как не могу понять (два раза...

Подскажите понять работу парецептрона на простом примере
Подскажите понять работу парецептрона. Один вход и один выход и промежуточный слой. На вход подаю...

Как освобождает память STL (на простом примере)
какая - то функция { struct ITEM { std::wstring a; std::wstring b; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru