Is there a way to get size of a single element or element count allocated using operator new[] ?
What I mean:
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;
}
Why I need it:
operator new(size_t)
and operator new[](size_t)
are invoked only when object is allocated on heap so I've got an idea of creating c++ garbage collection based on this.
- All objects inherit from
Object
class Object
class overridesoperator new(size_t)
andoperator new[](size_t)
like this:void* Object::operator new(size_t size) { Object& result = *static_cast<Object*>(::operator new(size)); result.referenceCount = (int)&result; return &result; }
Constructor of
Object
uses this information:Object::Object() { if ((void*)referenceCount != this) { referenceCount = -1; //stack object no reference counting } else { referenceCount = 1; //heap object count references } }
- Garbage Collector user
referenceCount
field to work with.
What I need now is to implement operator new[](size_t)
to set referenceCount
and that is why I need size of single element or element count. Impelenting operator new[](size_t)
for every object out of the question.
Any ideas?