使用 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 where),为 10 个整数的块分配了 40 个字节(在堆中)。我只是想具体化。谢谢

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

Space for 至少 10 ints 被分配(C++ 运行时库和操作系统实际上可能分配比这更多的内存,但是当然,您没有可移植的观察方式。

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

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