ydzf.net
当前位置:首页 >> C++怎么加大栈的空间? >>

C++怎么加大栈的空间?

如果用Visual C++的话,可以在链接选项中设:/STACK:reserve[,commit]/STACK 选项设置堆栈的大小(以字节为单位).此选项仅在生成 .exe 文件时使用.该选项指定虚拟内存中的总的堆栈分配.默认堆栈大小为 1 MB.链接器将指定值向上舍入为最接近的 4 个字节.commit 取决于操作系统所作的解释.在 Windows NT 和 Windows 2000 中,它指定一次分配的物理内存量.提交的虚拟内存导致空间被保留在页面文件中.更高的 commit 值在应用程序需要更多堆栈空间时可节省时间,但会增加内存需求并有可能延长启动时间.以十进制或 C 语言表示法指定 reserve 值和 commit 值.

修改编译参数,具体的csdn上面有一篇文章提到过……0.0,但是也是有上限的,如果不是很必要建议使用全局变量

这个问题都用汇编才能解释清楚此函数的汇编代码是:7: void func(int i)8: {00401580 push ebp00401581 mov ebp,esp00401583 sub esp,40h00401586 push ebx00401587 push esi00401588 push edi00401589 lea edi,[ebp-40h]0040158C mov

在工程设置中,连接选项中会有设置

可以啊,你使用动态申请内存不就能够实现了嘛

常用变量、函数(代码)等都放在堆内存中,而调用函数的参数和返回地址放在栈内存中,根据X86存储模式,堆和栈是在不同的数据区.你的例子中,各个变量全部放在堆内存,a[0],a[1]二者的地址是连续的,且从小到大,但b和b2的存储位置是编译程序随机分配的,谁大,谁小都没有关系.所谓大端、小端模式与操作系统有关,DOS系统是低字节在前,高字节在后,也许就是你说的小端模式.对于int a = 3;,a&0XFF的值就是3,a&0XFF00一定是0,感兴趣可以试试.

个存储区 1栈 - 有编译器自动分配释放 2堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静 态变量在一块区域,未初始化的全局变量

你的程序如果真需要那么大的静态数组(栈分配),那恐怕你的程序应该重新设计一下. 比如用动态的(heap,堆). - 程序的“栈”stack不是语言本身控制的,而是操作系统决定的,虽然编译器可以有些设置,但调节的范围也有限.

c语言构建栈就可以了,采用的方式是两种,一种是采用数组建栈,一种是采用指针建栈. #include"stdio.h" #include"malloc.h" #include"stdlib.h" #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define TRUE 1 #define FALSE

c++定义一个指定大小的堆栈使用如下方式:堆空间一般有操作系统的堆管理器来处理,栈空间一般是应用程序自动回收管理的,以windows为例,每一个应用程序默认的堆和栈空间大小都为1m.用户可以使用如下预处理命令指示链接器设置堆或者栈空间的大小.#pragma comment(linker, "/stack:1024000000,1024000000")/stack:[保留虚拟内存],[提交虚拟内存] ,这里的大小都是字节.所以上面的1024000000是字节数.

网站首页 | 网站地图
All rights reserved Powered by www.ydzf.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com