可能重复:
如何在 malloc 之后获取内存块长度?
如果我有一个指针,是否可以知道分配了多少字节new
?当我用谷歌搜索时,我找到了适用于 Windows:_msize()
和 Mac:的解决方案malloc_size()
。但对于 Linux 来说没有。
如果没有,有人知道为什么它对程序员隐藏吗?delete
绝对应该知道这样的信息。
更新:
据我所知,如果我有这个代码:
class A {
~A() {}
int m_a;
};
class B : public A {
~B() {}
int m_b;
};
int main() { A * b = new B(); delete b; return 0; }
将调用 A 的析构函数,但仍将new
释放所有分配的内存。这意味着它可以以某种方式计算,只知道指针。那么对程序员隐藏它的原因是什么?