-1

类的成员函数在哪里分配内存?

堆栈框架是它的答案吗?

每当我们调用成员函数时,它会被分配吗?

就像每当我们使用一个对象调用一个成员函数时,它会在堆栈帧中分配,当函数到达它时返回语句,分配的堆栈帧会被释放?

4

1 回答 1

0

类的成员函数在哪里分配内存?

函数数据的内存分配由实现定义。

堆栈框架是它的答案吗?

C++ 实现不需要使用堆栈结构。
局部变量的堆栈结构很方便,但不是必需的。

每当我们调用成员函数时,它会被分配吗?

执行进入函数时,可能会创建函数局部变量。不要求实现必须创建变量。变量可以存在于全局内存中,并在执行进入函数时进行初始化。

就像每当我们使用一个对象调用一个成员函数时,它会在堆栈帧中分配,当函数到达它时返回语句,分配的堆栈帧会被释放?

一种流行的实现是在堆栈上为局部变量分配空间。空间分配将涉及递增或递减堆栈指针。
当执行离开范围时,堆栈会相应地调整。

该实现允许使用寄存器,因此有可能没有分配内存并且堆栈没有更改。该实现可以在函数执行之前将寄存器压入堆栈,然后将它们弹出。

您的问题的答案是实现定义的。小型嵌入式系统可能会使用更多的寄存器或全局内存,而不是使用堆栈。有许多可能的数据结构可以使用并且仍然符合 C++ 语言标准。

于 2017-04-05T18:35:49.903 回答