C++允许 allocator::deallocate(NULL,1) 吗?
free(NULL)
和 ::operator delete(NULL)
都是允许的。分配器概念(例如 std::allocator 是否也允许deallocate(NULL,1),或者是否需要自己设置保护?
Both free(NULL)
and ::operator delete(NULL)
are allowed. Does the allocator concept (e.g. std::allocator also allow deallocate(NULL,1)
, or is it required to put your own guard around it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要添加自己的支票。
根据§20.4。 1.1/8,
解除分配
需要:当无法提供存储时,
allocate
会引发异常 (§20.4.1.1/7)。换句话说,allocate
永远不会返回 0,因此deallocate
永远不会得到 0。传递 0 会导致未定义的行为。You'll need to add your own check.
According to §20.4.1.1/8,
deallocate
requires:allocate
throws an exception when storage can't be given (§20.4.1.1/7). In other words,allocate
never returns 0, and thereforedeallocate
should never get a 0. Passing a 0 would lead to undefined behavior.