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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
calculon
14 / 14 / 3
Регистрация: 18.07.2012
Сообщений: 79
#1

Использование std::unique_ptr - C++

09.04.2014, 06:40. Просмотров 630. Ответов 4
Метки нет (Все метки)

Есть в коде подобная конструкция, вылетает исключение на этапе очистки памяти. С чем это может быть связано?
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
template <typename T> class MyVector
{
public:
    MyVector() : m_data(nullptr){}
 
    ~MyVector(){}
 
    void resize(const size_t size)
    {
        m_data = nullptr;
        m_data = std::unique_ptr<T[]>(new T[size]);
    }
 
    void clear()
    { 
        m_data = nullptr;
    }
 
private:
    std::unique_ptr<T[]> m_data;
}
 
MyVector<MyVector<int>> data;
 
data.resize(100);
for (int i=0; i<100; i++)
    data[i].resize(100);
 
for (int i=0; i<100; i++)
    data[i].clear();
data.clear();
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2014, 06:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использование std::unique_ptr (C++):

Копирование объектов std::unique_ptr - C++
привет, столкнулся с такой ситуацией, что вроде как копировать объекты std::unique_ptr запрещено, но тем не менее такой код...

Std::unique_ptr virtual метод - C++
#include &lt;iostream&gt; #include &lt;memory&gt; class Base { public: virtual void f1(); // Virtual function. }; class Derived...

Копирование std::unique_ptr в структуре - C++
Есть структуры и vector struct myStruct { int a; int b; void* param; }; struct sSetup { int x; int y;

Компилятор не видит std::unique_ptr - C++
Не создается unique_ptr int main(int argc, char *argv) { QCoreApplication a(argc, argv); std::unique_ptr&lt;int&gt; p; ...

Отсутствует std::unique_ptr gcc 4.8.1 - C++
всем привет , я в С++ начинающий и возникла проблема не работает std::unique_ptr версия компилятора gcc 4.8.1(tdm 2) флаг...

Шаблонные аргументы конструктора std::unique_ptr - C++
Если я пишу код std::unique_ptr&lt;int, void(*)(int*)&gt; myPtr_5(new int, (int* p) {delete p; }); то все приятно, и компилируется без...

4
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.04.2014, 07:18 #2
Это компилируется?
C++
1
data[i]
0
calculon
14 / 14 / 3
Регистрация: 18.07.2012
Сообщений: 79
09.04.2014, 07:24  [ТС] #3
Да, просто не стал указывать:
C++
1
2
3
4
template <typename T> T& MyVector<T>::operator[](const size_t index)
{
    return m_data[index];
}
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.04.2014, 08:17 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Именно этот код вызывает ошибку?

Добавлено через 45 минут
Ответа, видно, не дождусь... Выложенный код, скомпилированный двумя компиляторами (студия и mingw), при работе ошибок не выдаёт.
1
calculon
14 / 14 / 3
Регистрация: 18.07.2012
Сообщений: 79
09.04.2014, 08:21  [ТС] #5
Действительно в обрезанном виде компилируется...Все проверил и похоже дело в memset(m_data.get(), 0, size * sizeof(T)), который стоял у меня в конце функции resize и который я опрметчиво убрал задавая вопрос. Спасибо, за то, что не поленились проверить код.
0
09.04.2014, 08:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2014, 08:21
Привет! Вот еще темы с ответами:

Не срабатывает move конструктор std::unique_ptr - C++
Всем привет! Битый час не пойму почему в списке захвата компилятор ругается на удаленный копирующий конструктор unique_ptr, если я его...

Использование std::function в std::thread - C++
Нужно вызвать function fnc в новом потоке. Как сделать? function &lt;void(vector&lt;char&gt;)&gt; fnc; void test(vector&lt;char&gt; data) { for...

Использование std::type_index - C++
Доброе утро, облазил один игровой движок, там менеджеров ресурсов заполнен std::type_index - как я понимаю для контейнеров, где лежат...

Использование std::is_nothrow_default_constructible - C++
Здравствуйте! Я использую базовый класс в качестве создателя интерфейса синглтона, и мне необходимо передать в качестве шаблонного...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru