gpt4 book ai didi

c++ - 传入 A::operator new() 的大小是否总是等于 sizeof(A)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:32 26 4
gpt4 key购买 nike

struct A final
{
int a;

void* operator new(size_t size)
{
//
// Is size always equal to sizeof(A) here?
//
return ::operator new(size);
}

void operator delete(void* ptr)
{
::operator delete(ptr);
}
};

int main()
{
for (auto i = 0; i < 100; i++)
{
delete new A;
}
}

我的问题也嵌入了代码中。

C++ 标准是否保证传入 A::operator new() 的大小始终相同?

更新:在这里,只考虑 A 是最终类。

最佳答案

引自 C++11 标准,第 5.3.4 节第 10 点:

A new-expression passes the amount of space requested to the allocation function as the first argument of type std::size_t. That argument shall be no less than the size of the object being created; it may be greater than the size of the object being created only if the object is an array.

所以,是的,它保证与对象的大小相同。但是请注意,不同的编译器或不同的编译器选项可能会在编译时改变特定对象的实际大小。

关于c++ - 传入 A::operator new() 的大小是否总是等于 sizeof(A)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18456572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com