发布网友 发布时间:2022-06-06 16:59
共3个回答
热心网友 时间:2023-10-11 01:50
我只知道栈是系统自动维护的,比如定义的变量就是在栈内分配存储空间,变量的生命周期结束后系统自动回收。如果用new操作符分配的内存就是在堆上,系统不会自动回收,一定要手动调用delete来回收热心网友 时间:2023-10-11 01:50
栈的大小可以由连接器选项来控制,比如vc环境下的/stack选项,在代码里可以用#pragma comment(linker,"/stack:x")来设定,默认的设定是1MB,当声明一个局部int a[1000000];时,由于C++中声明时就要为变量分配足够的内存(不像java声明的时候只是引用),而这个局部变量又是放在栈上的,超过栈的大小就会引发一个异常,这个异常表明栈溢出。编译的时候,编译器通过一个叫做“栈检查函数”的函数来检查,这个函数确保代码不会访问热心网友 时间:2023-10-11 01:51
不符合题意,但也不算错。有一定的误导作用,这个是编译原理里面的内容