全局运营商new中的std :: ofstream

时间:2018-01-30 04:29:54

标签: c++ logging new-operator ofstream dynamic-allocation

有没有办法在替换的全局运算符new中写入文件?

// simple operator new replacment
void* operator new(std::size_t bytes) {
    std::ofstream log{"log.txt"};
    log << bytes << " bytes allocated\n";
    return std::malloc(bytes);
}

std :: ofstream使用new,创建一个无限循环。

1 个答案:

答案 0 :(得分:0)

你可以重载运算符但是对于特定的参数,我的意思不是全局的, 这是一个名为student的类的示例:

 void * operator new(size_t size)
{
    cout<< "Overloading new operator with size: " << size << endl;
    void * p = ::new student(); 
    //void * p = malloc(size); will also work fine

    return p;
}

您可以找到更多详情Here