读书人

malloc,new关于构造对象有关问题

发布时间: 2012-09-07 10:38:15 作者: rapoo

malloc,new关于构造对象问题?
请问:
在调用malloc如下:
CTest* pTest = (CTest*)malloc(sizeof(CTest));
然后得到pTest的时候怎么去实现跟new实现的效果一样?也就是去调用构造函数?
难道是pTest->CTest();这样是不对的,那应该如何呢?

求解答。

我不直接用new,是因为我自己管理内存了,所以只能用自己封装的malloc。但是我想实现跟new一样的功能。

我还有想过,在CTest中添加一个Init()函数,但是我觉得这样只能自己调,特别不好的地方就是析构的时候,我想让他自己析构,而不是自己调用UnInit();

[解决办法]
用 placement new:

#include <new>

pTest = new (pTest) CTest; 等价于 pTest->CTest();
[解决办法]

探讨

用 placement new:

#include <new>

pTest = new (pTest) CTest; 等价于 pTest->CTest();

[解决办法]
自己管理内存,那为什么不重载new呢!
[解决办法]
malloc函数只管分配内存,不构造对象。如果要构造的话就用定位new

C/C++ code
new(pTest) CTest(args); 

读书人网 >C++

热点推荐