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

Работа с allocator (управление памятью) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Исчезает всё нарисованное на gdi+ http://www.cyberforum.ru/cpp-beginners/thread454769.html
Доброго времени суток! Пишу подобие своего gui на gdi+.. Всё бы хорошо, но через некоторое время (около минуты), исчезает всё нарисованное.. и никакой Invalidate не помогает(( Что же делать??...
C++ Заполнение списка с возможностью перестановки его строк Как написать программу которая string загоняет в список, чтоб потом можно было переставлять строки и.т.п? http://www.cyberforum.ru/cpp-beginners/thread454749.html
C++ Класс с динамическим массивом
доброго времени суток! помогите мне немножко: создать клас vector для сохранения массиву, розмеры от 10 до 10к, память виделите динамчно. забаспечте индексацыю елементов.
Найти объединение и симметрическая разность C++
Пожалуйста, помогите написать программу, находящую объединение и симметрическую разность элементов двух множеств
C++ Создать структуру Student http://www.cyberforum.ru/cpp-beginners/thread454733.html
Не могу никак понять тему структуры, а тут сразу ещё и список, помогите написать код ка С++ : Создать структуру с именем Student с полями: фамилия, имя, номер группы, успеваемость (массив из пяти...
C++ Создать простое консольное приложение Задание 1 Создать простое консольное приложение 2 В созданном консольном приложении написать и отладить программу в соответствии с вариантом. Вариант выбирается по списку в учебном журнале ... подробнее

Показать сообщение отдельно
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
28.02.2012, 23:53  [ТС]
Цитата Сообщение от alex_x_x Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class A {
public:
  A() {};
  ~A() {};
};
 
typedef unsigned char BYTE;
 
int main() {
  BYTE* data = new BYTE[sizeof(A) * 10];
  A* a = new (data)A();
  a->~A();
  delete data;
}
смотреть placement new, и явные вызовы деструкторов например
прокоментируйте вот это строчку A* a = new (data)A();

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
typedef unsigned char BYTE;
 
template <class T>
class allocator {
 
public:
 
    T* allocate(int size_t) {
 
        BYTE *p = new BYTE[sizeof(T) * size_t];
        
        return (T*)p;
    }
 
    void deallocate(T *p, int n) {
        
    }
 
    void construct(T *p, T const & val) {
 
        *p = val;
    }
    void destroy(T *p) {
 
        p->~T();
    }
 
};
вот что то примерно этого?
только у меня еще 3 вопроса.
Как реализовать функцию деаллок?
правильно ли я реализовал конструкт?
и что мне делать в деструкторе контейнера для которого использую аллокатор( у меня вектор)
я так понял вызывать метод деаллок?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.