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

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

Войти
Регистрация
Восстановить пароль
 
PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
#1

Создание простого распределителя памяти - C++

09.06.2013, 10:34. Просмотров 370. Ответов 1
Метки нет (Все метки)

Вот мой код:
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
39
40
41
42
43
44
#include<iostream>
#include<cstdlib>
#define allocator Allocator
 
template<class T> class Allocator {
public:
    T* allocate(int n);
    void deallocate(T* p, int n);
 
    void construct(T* p, const T& v);
    void destroy(T* p);
};
 
template<class T> 
T* Allocator<T>::allocate(int n)
{
    return T* (malloc(n*sizeof(T)));
}
 
template<class T>
void Allocator<T>::deallocate(T* p, int n)
{
    free(p);
}
 
template<class T>
void Allocator<T>::construct(T* p, const T& v)
{
    p=T*(malloc(sizeof(T)));
    *p=v;
}
 
template<class T>
void Allocator<T>::destroy(T* p)
{
    free(p);
}
 
int main()
{
    allocator<int> alloc;
    int* p=alloc.allocate(5);
    return 0;
}
При компиляции выдаётся ошибка: "error C2275: T: недопустимое использование этого типа в качестве выражения". Подскажите, в чём проблема, и как её можно исправить.
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2013, 10:34     Создание простого распределителя памяти
Посмотрите здесь:

Создание простого рисунка c while. - C++
Д/3. Мы вводим произвольную, одну из диагоналей треугольник, на эран должно вывестись следующее: Напимер у нас размер равен 5. что...

Создание простого окна для программы - C++
Я создал лёгкую программу, но мне не хочется чтобы она выглядела как консоль, хочется видеть её примерно как Cheat Engine. Надеюсь на...

Создание простого приложения. Что нужно знать? - C++
Задача формулируется следующим образом: Изобразить на єкране лабиринт. По нему перемещается &quot;нечто&quot;. Перемещение управляется...

Создание менеджера памяти с++ - C++
У меня имеется вопрос: программа выделяет запрашиваемые пользователем блоки памяти. Затем некоторые из этих блоков удаляются (получается...

Создание объекта в области памяти - C++
Здорова! Тут вообщем не получается создать в одной и той же области памяти повторно объекты От есть код: //fynkci9 clone() #include...

Создание объекта в области памяти - C++
Не могу разобраться с таким вопросом. Пусть есть у нас класс Example (у него есть стандартный конструктор и неважно что он делает). и...

Создание указателя на объект и выделение памяти - C++
Не пойму почему при добавлении одного указателя выдает ошибку Этот код работает class A { public: class B { public: ...

Создание объектов в заранее выделенной памяти - C++
Как можно создать объекты в заранее выделенной памяти? Цель: 1. Не запрашивать память динамически когда нужно создать новый...

Создание исключения при динамическом выделении памяти - C++
Вот код из учебника в нем мне все понятно. #include&lt;iostream&gt; #include&lt;cstdlib&gt; //exit() #include&lt;new&gt; using std::cout;using...

Создание объекта класса, чтобы он постоянно висел в памяти, и чтобы память выделялась один раз - C++
Как можно организовать класс, а так же создание объекта класса, чтобы он постоянно висел в памяти на протяжении всей работы программы, и...

Генерация простого числа - C++
Необходима программа которая бы генерировала какое-то любое простое число от 2 до N . N пусть ограничивается самым длинным типом данных.

Поиск простого числа - C++
с целочисленного массива надо вывести первое простое число далее выводить числа пока не дойдет к следующему простому. Помогите пожалуйста...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
09.06.2013, 10:42     Создание простого распределителя памяти #2
Строка 18 и все аналогичные:
Цитата Сообщение от PG94 Посмотреть сообщение
return T* (malloc(n*sizeof(T)));
int * (void*) - инт умножить на void*. Используйте какой-нибудь static_cast<T*>(malloc(....));
Ответ Создать тему
Опции темы

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