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

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

Восстановить пароль Регистрация
 
PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
09.06.2013, 10:34     Создание простого распределителя памяти #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++ Создание простого рисунка c while.
Создание указателя на объект и выделение памяти C++
C++ Создание менеджера памяти с++
Создание объекта в области памяти C++
C++ Создание объекта класса, чтобы он постоянно висел в памяти, и чтобы память выделялась один раз
Создание исключения при динамическом выделении памяти C++
Создание объекта в области памяти C++
Создание простого приложения. Что нужно знать? C++

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

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

Текущее время: 04:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru