c++ - 每个类重载 new(),而不是全局重载

标签 c++ memory memory-management

<分区>

我知道要重载全局 new 运算符,您可以这样做,所有类都将使用它:

void *operator new(size_t size){
    if(void *mem = malloc(size)){
        cout << "allocated memory" << endl;
        return mem;
    }
    else{
        throw bad_alloc();
    }
}

但是我如何在每个类 上重载 new()?那么类 X、Y 和 Z 的 new() 的不同实现?

最佳答案

是的,只需将其声明为static:

 class X
 {
    static void *operator new(size_t size) {
        if(void *mem = malloc(size)){
            cout << "allocated memory" << endl;
            return mem;
        }
        else{
           throw bad_alloc();
       }
    }
  };

我们完成了。

关于c++ - 每个类重载 new(),而不是全局重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18048298/

相关文章:

c++ - 使用 MODULEENTRY32 和 MODULEINFO,在单独的进程中扫描特定 INT 值的步骤是什么?

多个进程可以共享其堆内存吗?

memory - Web服务器容量规划: more cores versus more memory

c# - 有人可以发送 ReadInt32 来写入进程内存吗?

c++ - 从C++动态2D阵列到OpenCV Mat

c++ - 使用boost buffer序列化并使用UDP协议(protocol)发送

memory-management - Fortran 内存分配不报错,但程序在初始化时被操作系统杀死

linux - 进程的内存详细信息

c++ - glDrawArrays(GL_TRIANGLES, 0, model.indicesCount) 上的 openGL 未处理异常;称呼

Objective-C >> 获取内存中的对象地址