有没有办法获得使用 operator new[] 分配的单个元素的大小或元素计数?
我的意思是说:
void* Object::operator new[](size_t size)
{
void *temp = ::operator new(size);
//Get size of single element or count of elements being allocated
return temp;
}
为什么我需要它:
operator new(size_t)
并且operator new[](size_t)
仅当在堆上分配对象时才调用,所以我有了一个基于此创建 c++ 垃圾收集的想法。
- 所有对象都继承自
Object
类 Object
类覆盖operator new(size_t)
,operator new[](size_t)
像这样:void* Object::operator new(size_t size) { Object& result = *static_cast<Object*>(::operator new(size)); result.referenceCount = (int)&result; return &result; }
构造函数
Object
使用此信息:Object::Object() { if ((void*)referenceCount != this) { referenceCount = -1; //stack object no reference counting } else { referenceCount = 1; //heap object count references } }
- 要使用的垃圾收集器用户
referenceCount
字段。
我现在需要的是实现operator new[](size_t)
设置referenceCount
,这就是为什么我需要单个元素的大小或元素计数。operator new[](size_t)
对每一个对象都无能为力。
有任何想法吗?