类内初始化的开辟过程

c++的类内初始化给成员变量赋值,是在代码编译阶段在栈上开辟一块内存吗?

运行阶段

首要你要明白,编译阶段做了什么?编译只是将你的代码编译成执行文件,并不会进行内存申请。

然后就需要区分你对象的写法了如果是个 指针,运行到了这行的时候才会进行内存申请,这个叫做堆内存。
如果用的是对象的方式初始化对象,在你程序启动的时候就会申请内存,这个叫做栈内存,栈内存是有限的。

// 代码是不是很简单,看着没问题,实际你运行下就挂了, 因为栈内存无法满足 arr 的需求
int main() 
{
    int arr[1000000];
    return 0;
}

img