21xrx.com
2024-12-22 20:50:10 Sunday
登录
文章检索 我的文章 写文章
C++类的成员变量存储在堆上还是栈上?
2023-07-09 01:26:11 深夜i     --     --
C++ 成员变量

C++是一种面向对象的编程语言,在这种语言中,类是一个重要的概念,类的成员变量是类的组成部分之一,也是程序中经常使用的数据类型之一。但是,在使用类的成员变量时,会产生一个问题:这些变量被存储在堆上还是栈上?

在C++中,变量和对象都可以存储在堆上或栈上。在堆上分配内存需要手动调用new/delete或者malloc/free等函数,在栈上分配内存则是由编译器自动完成的。通常情况下,局部变量和普通变量会在函数栈帧上分配,而动态分配的内存(如new出来的对象)则会在堆上分配。

对于类的成员变量,如果是静态成员变量,则它们存储在全局数据区中,而非静态成员变量则存储在类的实例对象中。因此,当我们创建一个类的实例对象时,该对象的非静态成员变量会被自动分配在堆上(动态内存分配),而对象本身会被分配在栈上。

综上所述,C++类的成员变量通常是存储在堆上的,随着类实例对象的创建而动态分配内存。但是,如果是静态成员变量,则存储在全局数据区中。需要注意的是,这不是一条绝对的规律,有时编译器也可能进行优化,把对象和成员变量都放在栈上或者寄存器中。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复