繁体   English   中英

使用 new 运算符在堆中分配了多少内存?

[英]How much memory is allocated in heap using new operator?

int main()
{
    int ptr* = new int[10];
}

我想知道是否在堆中分配了 10 * 4 个字节(40 个),并且为指针也分配了 8 个字节,或者整行仅分配了 40 个字节。 如果为指针分配了内存,那么在堆栈中分配了 8 个字节?

我不确定,但我认为为 ptr 分配了 8 个字节(IDK 在哪里),以及为 10 个整数块 - 40 个字节(在堆中)。我只是想具体化。 谢谢。

你的意思是int* ptr = new int[10];

至少分配了 10 个int的空间(C++ 运行时库和操作系统实际上可能分配比这更多的内存,但当然您没有可移植的观察方式)。

那是10 * sizeof(int)个字节。 在当前常见的桌面系统上,确实是 40 字节。

该内存具有动态存储持续时间。 它被分配给一个int*指针类型ptr ,它本身具有自动存储持续时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM