2 wyg2cxy wyg2cxy 于 2017.01.12 21:43 提问

堆栈大小对程序的影响

两个环境a和b,一套代码,编译完成后,有一个交易在a环境正常运行,但是在b环境上就会core,找个半天原因,没发现代码中的内存访问错误,后来把b环境的堆栈空间扩大一倍,程序就正常跑了,扩大之前两个环境堆栈大小一样,请教各位大神,为啥同样的代码,同样的编译设置,在b环境需要更大的堆栈空间,现行谢过各位

1个回答

caozhy
caozhy   Ds   Rxr 2017.01.12 23:53

你有使用递归算法么?或者调用深度很大,或者在函数里定义很多局部变量?如果有以上情形的确会出现你说的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
VC程序中关于堆栈大小的划定
转自 http://blog.csdn.net/liuhuiyi/article/details/8207021      昨天在做小猪登山的题目碰到了数组容量太大的问题,今天做一个总结。      首先,参考了Slyar的文章《C语言 全局变量和局部变量的大小限制》直接贴上。 [cpp] view plaincopyprint? #include    int
参数传递对堆栈的影响
前言 虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC)。另外,了解内存管理可以帮助我们理解在每一个程序中定义的每一个变量是怎样工作的。 简介 这篇文章我们将介绍一些方法参数传递行为在堆与栈中的影响。前几节我们介绍了堆与栈的基本工作原理,程序执行时值类型与引用类型在堆栈中的存
程序中关于堆栈大小的划定
昨天在做小猪登山的题目碰到了数组容量太大的问题,今天做一个总结。      首先,参考了Slyar的文章《C语言 全局变量和局部变量的大小限制》直接贴上。 #include int main(){ int a[1000000];//局部变量 return 0; } 编译运行后发现溢出错误。 #include int a[1000000];//全局变量 int main(){
Linux进程与它的堆栈空间
一)概述   .堆栈是一个用户空间的内存区域,进程使用堆栈作为临时存储.   .堆栈中存放的是函数中的局部变量,在函数的生命周期中可以将变量压入堆栈,编译器需要确保堆栈指针在函数退出前恢复到初始位置,也就是说,内存是自动分配和释放的.   .C/C++把存储在堆栈中的局部变量当作automatic存储,并使用auto关键字,这是局部变量的默认存储方式,所以现在没有人用auto关键
vs中修改程序默认堆栈大小
vs2013中默认堆栈大小是1m,如果想修改为更大的值则需要修改“堆栈保留大小”。右键项目\属性\配置属性\链接器\系统\堆栈保留大小  重新设置及即可。 注意:其默认单位是k,如果想设置堆栈保留大小为2m,则需要输入2097152(2048*1024 = 2097152)
堆栈大小的设置
二、模板中设置向量中断堆栈大小为256 即:IRQ_STACK_LEGTH         EQU         256 但是为什么我将其大小变为零,即:IRQ_STACK_LEGTH         EQU         0 也照样可以运行程序?程序中通过SPI中断收发数据。谢谢!   既然中断堆栈是为进入中断后局部变量和函数调用开辟的存储区,那如果将堆栈大小设为0,进入中
对堆栈的认识
什么是堆和栈,它们在哪儿?问题描述编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看)? 1、在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗? 2、它们的作用范围是什么? 3、它们的大
编程:如何分析递归函数会占用多少堆栈空间,即空间复杂度
下面好文看了后可以想: ——》
keil中编写arm代码堆栈的设置
arm应用程序代码在运行之前需要先加载一段启动程序代码,下面以s3c2440启动代码为例进行分析arm的堆栈的设置。如果我们直接使用keil中自带的启动代码,可能有时候我们会顺利通过编译,然后运行,但是,有些时候我们编写的代码不能顺利通过编译,和我们的愿望违背。这个时候我们要做的就是修改我们的启动代码,使之适应我们的要求。 arm体系结构中有其中工作模式分别是未定义指令模式、管理模式、系统模式、
【涨姿势】Windows下调整系统栈大小(附图)
我们知道,递归以及开局部变量都是要占用栈空间的 而Windows默认给每个线程仅仅分配1M内存(大神说是这样的) 这时就需要手动调整系统栈大小了。以下转自Lynstery: 在用gcc/g++编译时指定参数 -Wl,–stack=size size是栈的大小,单位为字节。 比如我现在要编译一个名为hh的c++程序,栈的大小要16M,就这样如果是像本蒟蒻一样用dev-c++的,那么可