VC ++执行operator delete

时间:2018-03-22 11:24:53

标签: c++ visual-c++ dynamic-memory-allocation delete-operator

在处理项目时,我在代码中调用了全局运算符delete:

::operator delete((void*)m_data, size() * sizeof(T));

这使我的程序崩溃,但这不是我的问题。崩溃时,Visual Studio打开了scalar_delete.cpp文件,该文件包含带标量的operator delete实现。在那里,我完全惊讶于标量参数被忽略了!

//
// delete_scalar_size.cpp
//
//      Copyright (c) Microsoft Corporation. All rights reserved.
//
// Defines the scalar operator delete, size_t overload.
//
#include <vcruntime_internal.h>
#include <vcruntime_new.h>



void __CRTDECL operator delete(void* block, size_t) noexcept
{
    operator delete(block);
}

我想知道为什么会这样,以及为什么如果它没有做任何特别的事情,他们甚至会提供这种重载。

编辑:@StoryTeller的评论已经解释了为什么这个重载存在,但我仍然不确定为什么它是空的,因为它对我来说似乎不合逻辑。

0 个答案:

没有答案