【发布时间】:2017-01-04 16:36:35
【问题描述】:
您能否在 C++ 类的构造函数中安全地使用 malloc 并使用 new 来创建该对象的实例?我知道在正常情况下将两者同时使用是不安全的,但在这种情况下是否可能/安全?
【问题讨论】:
-
您在寻找placement
new吗? -
是的,它有效:您对某些代码的问题可能类似于:`struct A { int* val; A() : val(malloc(sizeof(int)) {} ~A() { free(val); }; A* = new A;
-
我想如果构造函数包含一个指向错误分配内存的指针,而析构函数释放它,那么使用
new分配构造的对象就没有问题。它并不完全按照通常的方式做事,但只要你小心地将两组内存分配问题分开,你应该没问题。如果你正在寻找malloc()整个对象,那么你就有问题了——你什么也没有。 -
当然。一直调用 C 库时会发生这种情况。 C库的init函数经常会做很多
malloc的调用,我是从构造函数中调用的。
标签: c++ c memory malloc new-operator