#include<iostream>
#include <string.h>
using namespace std;
// 利用malloc free实现new delete
class classA
{
public:
classA()
{
cout << "构造函数调用" << endl;
}
~classA()
{
cout << "析构函数调用" << endl;
}
};
void *malloc_ext(int size)
{
if (size <= 0)
{
return nullptr;
}
auto *a = (classA*)malloc(size);
new(a) classA; // 在分配的内存块a上执行构造函数
//classA *b = new(a) classA;
return a;
}
void free_ext(classA *A)
{
if (A == nullptr)
{
return;
}
A->~classA();
free(A);
}
int main()
{
auto t = (classA*)malloc_ext(sizeof(classA));
free_ext(t);
system("pause");
return 0;
}
C++ 用malloc/free简单实现new/delete
最新推荐文章于 2023-04-02 14:34:34 发布