使用 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 int
s 被分配(C++ 运行时库和操作系统实际上可能分配比这更多的内存,但是当然,您没有可移植的观察方式。
那是 10 * sizeof(int)
字节。在当前常见的桌面系统上确实是 40 字节。
该内存具有动态存储持续时间。它被分配给一个 int*
指针类型 ptr
,它本身具有自动存储持续时间。
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 int
s 被分配(C++ 运行时库和操作系统实际上可能分配比这更多的内存,但是当然,您没有可移植的观察方式。
那是 10 * sizeof(int)
字节。在当前常见的桌面系统上确实是 40 字节。
该内存具有动态存储持续时间。它被分配给一个 int*
指针类型 ptr
,它本身具有自动存储持续时间。