Run Code  | API  | Code Wall  | Misc  | Feedback  | Login  | Theme  | Privacy  | Patreon 

Fruit_

Language: Layout:
+ ] Compiler args + ] Show input
Compilation time: 0.72 sec, absolute running time: 0.14 sec, cpu time: 0 sec, memory peak: 3 Mb, absolute service time: 0,87 sec 
edit mode |  history

***************************************************


在栈里面创建对象的测试

(Fruit)    Fruit(int, double, char) has been called

(Apple)    Apple(int, double, char, int, char) has been called
Fruit(55, 0, r)
size = 32, address = 0x0x7ffd16e24470

Apple (49, p)
size = 40, address = 0x0x7ffd16e24470

(Apple)    ~Apple() has been called

The object Fruit(55, 0, r) has been deconstructed
***************************************************




***************************************************


通过普通的new,在堆里面创建对象的测试
size_t = 40

(Apple)    void* operator new(size_t) has been called

(Fruit)    Fruit(int, double, char) has been called

(Apple)    Apple(int, double, char, int, char) has been called
Fruit(1, 0, b)
size = 32, address = 0x0x86ac20

Apple (97, k)
size = 40, address = 0x0x86ac20

(Apple)    ~Apple() has been called

The object Fruit(1, 0, b) has been deconstructed

(Apple)    void operator delete(void*) has been called


***************************************************


测试调用抛出异常的构造函数,重写了operator new,检测抛出异常后,会调用哪个delete 
size_t = 40

(Apple)    void* operator new(size_t) has been called

(Fruit)    Fruit(int, double, char) has been called

(Apple)    Apple(int) has been called
TestException() has been called

The object Fruit(11, 0, x) has been deconstructed

(Apple)    void operator delete(void*) has been called

exception catched
TestException
~TestException() has been called


***************************************************


测试抛出异常的构造函数,重写并调用了placement new,检测抛出异常后,会调用哪个delete

(Apple placement new  <int>)    void* operator new(size_t, int) has been called

(Fruit)    Fruit(int, double, char) has been called

(Apple)    Apple(int) has been called
TestException() has been called

The object Fruit(69, 0, r) has been deconstructed

(Apple placement delete <int>)    void operator delete(void*, int) has been called

exception catched
TestException
~TestException() has been called


***************************************************


测试调用一个不成对的placement new,检测抛出异常后,会调用哪个delete
size_t = 40

(Apple placement new <char>)    void* operator new(size_t, char) has been called

(Fruit)    Fruit(int, double, char) has been called

(Apple)    Apple(int) has been called
TestException() has been called

The object Fruit(16, 0, y) has been deconstructed

exception catched
TestException
~TestException() has been called


***************************************************


测试调用正常的构造函数的过程,使用的是重写的operator new,检测会调用那个delete

(Apple placement new  <int>)    void* operator new(size_t, int) has been called

(Fruit)    Fruit(int, double, char) has been called

(Apple)    Apple(int, double, char, int, char) has been called
Fruit(26, 0, r)
size = 32, address = 0x0x86bcb0

Apple (54, r)
size = 40, address = 0x0x86bcb0

(Apple)    ~Apple() has been called

The object Fruit(26, 0, r) has been deconstructed

(Apple)    void operator delete(void*) has been called


***************************************************


数组测试

(Apple)    void* operator new[](size_t) has been called

(Fruit)    Fruit(int, double, char) has been called

(Apple)    Apple(int, double, char, int, char) has been called
Fruit(36, 0, c)
size = 32, address = 0x0x86bce8

Apple (52, x)
size = 40, address = 0x0x86bce8

(Fruit)    Fruit(int, double, char) has been called

(Apple)    Apple(int, double, char, int, char) has been called
Fruit(5, 0, s)
size = 32, address = 0x0x86bd10

Apple (85, e)
size = 40, address = 0x0x86bd10

(Apple)    ~Apple() has been called

The object Fruit(5, 0, s) has been deconstructed

(Apple)    ~Apple() has been called

The object Fruit(36, 0, c) has been deconstructed

(Apple)    void operator delete[](void*) has been called

    
                
λ
.NET NoSQL database for rapid development