C++中的静态和动态内存分配

10 浏览
0 Comments

C++中的静态和动态内存分配

这个问题已经有答案了

为什么应该使用指针而不是对象本身?

为什么下面的猜测是错误的?(一家软件工程公司的经理告诉我它几乎正确,但我不明白为什么,我也无法在互联网上搜索到答案...)

int* ptr = new int;      // Sorry I mistyped before

我的观点:

  1. 左边部分(ptr)是静态的内存分配。
  2. 右边的部分(new int)是动态内存分配。

//新编辑:2015年1月1日17:39(UTC +08:00)

我的想法是,

它将堆栈指针向下(或向上?)移动,以释放一个空间给ptr

然后找到一个空的空间来存储new int

然后将new int的地址存储到ptr中。

admin 更改状态以发布 2023年5月25日
0
0 Comments

你的说法是正确的。

  1. 左边的部分(ptr)是静态内存分配。

  2. 右边的部分(new int)是动态内存分配。

换句话说,右边的部分返回一个 int *,一个(动态分配的)int 指针。你不能将它赋值给(静态分配的)int 类型变量。

0
0 Comments

左侧是一个int,右侧是创建int *(指针)

你想要:

int * ptr = new int;

或者你想要进行静态分配

int num; // = 5; Will initialize num to 5

0