gpt4 book ai didi

c++ - 重载新的

转载 作者:行者123 更新时间:2023-11-28 04:47:21 25 4
gpt4 key购买 nike

class myClass
{
//variables etc.
public:
void* operator new(size_t size);
};
  1. 为什么重载 new 需要 size_t 参数?我知道 malloc 需要大小,但我们可以改用 sizeof(myClass)

  2. 我可以混合使用 new[]/deletenew/delete[]类(class)?这样做有什么缺点吗?

class myClass
{
//variables etc.
public:
void* operator new(size_t size)
{
return new myClass[1];
}
void operator delete(void* p)
{
delete[] (myClass*)(p);
}
};

最佳答案

不要在实现中使用 new[]delete[],您应该使用 malloc/free 或在对应的方法前面加上范围,例如

class myClass {
public:
void* operator new(size_t size)
{
return ::operator new(size);
}

void operator delete(void* p)
{
::operator delete(p);
}
};

关于c++ - 重载新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49013082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com