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

问题描述

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

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

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

解决方法

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

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

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

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