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

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

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

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

09.04.2014, 06:40. Просмотров 522. Ответов 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();
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2014, 06:40     Использование std::unique_ptr
Посмотрите здесь:

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

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

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

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

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

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

Использование std::system() - C++
компилирую в студии 2010. система win7. #include &lt;Windows.h&gt; int main() { int i=0; while(i&lt;1) { ...

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

Использование using namespace std; - C++
Я где-то слышал что использование такой диррективы на корню убивает пространство имен, но ведь только в boost и stl есть похожие классы,...

Использование std::array внутри пользовательского класса - C++
Здравствуйте! Я создал класс, одним из полей которого является массив std::array, однако компилятор ругается на константу, что задаёт...

Разобраться почему не компилируется код (использование std::bitset) - C++
У меня не компилируется этот код. Где Ошибка? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...


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

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

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

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