有没有办法获得使用 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)对每一个对象都无能为力。
有任何想法吗?