c++ 14是否要求delete表达式必须调用' void operator::delete(void*, std::
Does C++14 require that the delete expression must call `void operator ::delete(void*, std::size_t)` instead of `void ::operator delete(void*)`?
根据此
void operator delete (void*); (1)
void operator delete[](void*); (2)
void operator delete (void*, const std::nothrow_t&); (3)
void operator delete[](void*, const std::nothrow_t&); (4)
void operator delete(void*, std::size_t) (5)
void operator delete[](void*, std::size_t) (6)
void operator delete(void*, std::size_t, const std::nothrow_t&) (7)
void operator delete[](void*, std::size_t, const std::nothrow_t&) (8)
(5-8)如果用户定义的替换为,则调用而不是(1-4)提供。标准库实现与(1-4)相同。
我相信引用的语句是正确的;但是,我不能确认它是否符合c++ 14标准草案n3797。
我检查了3.7.4和18.6,没有发现明确要求delete表达式必须调用void ::operator delete(void*, std::size_t)
而不是void ::operator delete(void*)
(如果前者存在)。
你能把标准草案的右页给我看一下吗?
释放函数的选择说明如下:
5.3.5 Delete [expr.delete]10如果类型是完整的,如果解分配函数查找找到一个普通的释放函数,只有一个指针形参和一个通常的释放函数,带有指针形参和大小参数,则选择的回收函数为有两个参数。否则,选中的回收函数应该是只有一个参数的函数
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 在c++类上调用void函数
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 在派生函数中指定void*参数
- C++为什么尽管我调用了void函数,它却不起作用
- 如何从void函数输出字符串
- 我应该使用什么来代替void作为变体中的替代类型之一
- 运算符C++ "delete []"仅删除 2 个前值
- 奇怪的结构&GCC&clang(void*返回类型)
- 编译Qt项目给出了对运算符delete(void*,unsigned int)的未定义引用
- C++:运算符delete(void*)受到保护
- C++中的大小释放:全局运算符delete的正确行为是什么(void*ptr,std::size_t size)
- 使用delete操作符删除void指针
- g++ 4.9.0允许对位置分配使用operator delete[](void*, size_t)
- 为什么"const T*"在"operator delete"中被简单地转换为"void*"?
- c++ 14是否要求delete表达式必须调用' void operator::delete(void*, std::
- 为什么 gcc 4.9.0 中没有定义"void operator delete(void* ptr, std::size_t size) noexcept;"?
- 线程清理器报告使用嵌入式参考计数器时"data race on operator delete(void*)"
- :operator delete(void*)是否知道使用::operator new(size_t)分配的内存大小
- C++ delete[] void* curiosity