我正在用C ++写一个内存管理器-也就是说,一个类从堆中分配了很多字节,然后为程序使用了分配和释放函数。

void* allocate(int size);
void deallocate(void*, int size);


这很好用,但是我不喜欢的是我需要这样做才能使用它:

CClass* myobject = (CClass*) manager->allocate(sizeof(CClass));


所以我的问题是,有没有一种方法可以将类类型传递给函数,而不是使用空指针?这将消除对转换和sizeof调用的需求,并且也将消除将对象大小传递给deallocate函数的需求。

有谁知道我可以做的更好的方法吗?

最佳答案

您可以使用模板功能。

简化示例:

#include <string>
#include <iostream>
using namespace std;

template<typename T>
T* allocate() {
  return (T*) malloc(sizeof(T));
}

int main() {
  int *s = allocate<int>();
  *s = 42;
  return *s;
}

09-28 02:11