动态分配的内存存储说明

Dynamically allocated memory storage clarification

本文关键字:说明 存储 内存 动态分配      更新时间:2023-10-16

当内存是动态分配的时,无论它在何处声明,它是否都存储在堆上?例如,如果在 main(( 中声明了以下代码行

int* p = new int[100000];

内存是从堆还是堆栈分配?

如果在全局范围内进行相同的声明,则将从堆中获取内存。但我读到动态分配的内存存储在堆上,局部变量存储在堆栈上。那么当上面的代码行从 main 内部执行时,使其成为局部变量,是从堆栈还是堆中获取内存?

我想

我会把这个作为一个答案:

很简单:

  • 如果使用"new",将从堆中分配内存。

  • "p"是一个局部变量。它是一个指针,它存储在堆栈上。

  • 它指向的 10,000 个整数是由"new"分配的;它们存储在堆中。

int* p = new int[100000];

将始终从中分配内存(正确的术语是动态存储(。这意味着使用 newnew[] .

只有指针变量本身会分别获得main()外部的静态存储分配、本地存储内部的静态存储分配。