我已经将我的运营商 new[] 覆盖为
void* operator new[](std::size_t sz, const char *file, int line)
{
void* mem = malloc(sz);
if(mem == 0){
printf("Could not allocate the desired memory, the new operator fails\n");
std::abort();
}
printf("Allocation has been done!\n");
printf("Allocation has been done! In %s, line #%i, %p[%i]\n", file, line, mem, sz);
return mem;
}
#define DEBUG_NEW2 new[](__FILE__, __LINE__)
#define new[] DEBUG_NEW2
我的程序主要使用这种类型的 new 运算符,这就是我比较关心它的原因。但是,编译器给了我“宏名称 [-Werror] 后缺少空格”的错误消息。我试图玩弄“#define new[] DEBUG_NEW2”。在某些情况下,它可以编译,但我不会被覆盖 new[] 。