【发布时间】:2014-04-14 05:26:51
【问题描述】:
如何确定 C++ new 运算符分配的内存大小。 ?
在 C 中,malloc 的语法如下:
void *malloc(size_t size);
在这里我们知道我们分配的大小。
但是在 C++ 中,当我们如下进行内存分配时,我们如何确定分配的大小。我很想知道new 如何确定需要分配的大小。
foo *pFoo = new foo();
【问题讨论】:
-
这个问题让我找到了一些有趣的参考资料。很明显,故意让你不容易知道一个物体有多大。 (毕竟,如果你以错误的方式使用这些信息,你会严重破坏封装。)但我当然可以想到你想知道的原因,这不是微不足道的......
-
使用
sizeof运算符。 -
@JohnnyMopp sizeof() 可能返回 1。stackoverflow.com/questions/4338966/…
-
@RobP 这不太可能。这是可能的。您的链接没有比这更高。除了可能的 vtable 指针之外,它仍然是问题的答案。
-
@RobP:
sizeof在这里为空类返回 1 是可取的......new也应该返回一个指向单个字节的不同指针。 5.3.4/14 "new T导致调用operator new(sizeof(T))"
标签: c++ memory-management