#include <vector>
#include <iostream>
struct MemoryManager
{
static void* allocate( unsigned size )
{
static char block[256];
return block;
}
};
class Foo
{
public:
void* operator new[]( size_t size )
{
std::cout << "operator new[] : data size -- " << size << std::endl;
return MemoryManager::allocate( size );
}
private:
std::vector<long> m_dummy; // Huh?
unsigned m_num;
};
int main( int argc, char * argv[] )
{
std::cout << "Foo size: " << sizeof( Foo ) << std::endl;
new Foo [4];
Foo::operator new[]( 4 * sizeof( Foo ) );
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IE1lbW9yeU1hbmFnZXIKewogICAgc3RhdGljIHZvaWQqIGFsbG9jYXRlKCB1bnNpZ25lZCBzaXplICkKICAgIHsKICAgICAgICBzdGF0aWMgY2hhciBibG9ja1syNTZdOwogICAgICAgIHJldHVybiBibG9jazsKICAgIH0KfTsKCmNsYXNzIEZvbwp7CnB1YmxpYzoKICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKCBzaXplX3Qgc2l6ZSApCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJvcGVyYXRvciBuZXdbXSA6IGRhdGEgc2l6ZSAtLSAiIDw8IHNpemUgPDwgc3RkOjplbmRsOwogICAgICAgIHJldHVybiBNZW1vcnlNYW5hZ2VyOjphbGxvY2F0ZSggc2l6ZSApOwogICAgfSAgCiAgICAKcHJpdmF0ZToKICAgIHN0ZDo6dmVjdG9yPGxvbmc+IG1fZHVtbXk7ICAvLyBIdWg/CiAgICB1bnNpZ25lZCBtX251bTsKfTsKCmludCBtYWluKCBpbnQgYXJnYywgY2hhciAqIGFyZ3ZbXSApCnsKICAgIHN0ZDo6Y291dCA8PCAiRm9vIHNpemU6ICIgPDwgc2l6ZW9mKCBGb28gKSA8PCBzdGQ6OmVuZGw7CiAgICBuZXcgRm9vIFs0XTsKICAgIEZvbzo6b3BlcmF0b3IgbmV3W10oIDQgKiBzaXplb2YoIEZvbyApICk7Cn0K