99问答网
所有问题
申请的数组明明不大,为什么会有栈溢出
如题所述
举报该问题
推荐答案 2017-09-11
在函数外定义数组试试,函数调用的时候会将变量分配在栈上,所以当数组太大的时候可能会出现栈溢出的情况,在函数外定义全局变量,可能会避免这种情况。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/vWezXzXvOOjXttv7jOO.html
其他回答
第1个回答 2017-08-31
如果递归调用的层数太多,就会造成栈溢出。
相似回答
栈溢出
原理
答:
栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数
,因而导致与其相邻的栈中的变量的值被改变。这种问题是一种特定的缓冲区溢出漏洞,类似的还有堆溢出,bss 段溢出等溢出方式。栈溢出漏洞轻则可以使程序崩溃,重则可以使攻击者控制程序执行流程。此外,我们也不难发现,发...
栈溢出
是
什么
意思?
答:
栈溢出是一种常见的程序错误,它会导致程序在执行过程中崩溃并停止运行
。栈是内存中的一种数据结构,用于存储函数调用所需要的信息,包括局部变量、函数参数、返回地址等。当一个函数被调用时,它在栈上分配一些空间用于存储这些信息。如果在函数执行过程中,栈的空间不足以存储需要的信息,就会触发栈溢出...
栈溢出
是
什么
?
答:
栈溢出是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小
,因此当这个数据足够大的时候,将会溢出缓冲区的范围。2、对每个程序来说,栈能使用的内存是有限的,一般是 1M~8M,这在编译时就已经决定了,程序运行期间不能再改变。如果程序使用的栈内存超出最大值,就会发生栈...
求解
,为什么会出现栈溢出
?(pascal)
答:
子程序 中的变量默认是放在内存的
栈
区,而这个区域实际空间很小 num:
array
[1..100000]of longint;这句的问题 这样的一个
数组
需要的空间很大 建议把变量都放到 主程序 中,因为存放主程序的变量的区域要大得多
为什么会
产生
溢出
??
答:
1.内存
溢出
问题是 C 语言或者 C++ 语言所固有的缺陷,它们既不检查
数组
边界,又不检查类型可靠性(type-safety)。众所周知,用 C/C++ 语言开发的程序由于目标代码非常接近机器内核,因而能够直接访问内存和寄存器,这种特性大大提升了 C/C++ 语言代码的性能。只要合理编码,C/C++应用程序在执行效率上必然...
问c++高手
什么
原因会造成stack overflow?如何解决
答:
1、在某个函数中
申请的栈
空间过
大,
导致
溢出
,例如在某个函数中,定义了一个超级大
的数组
。2、函数调用的层次太多导致溢出,因为每次调用一次函数,就都会把函数和函数的参数入栈,如果调用函数次数过多,会导致溢出,比如一个递归函数,递归了1000次10000,就可能溢出 3、再就是比较常见的,数组或者...
堆
栈溢出
堆栈溢出
答:
由于输入的name字符串过长,超过了
数组
的容量,多余的字符会溢出到内存的顶部。由于堆栈的增长方向与内存相反,溢出的字符会覆盖原有的堆栈元素,如EBP和ret。当main函数返回时,它将错误地将'A'的ASCII码(0x41414141)当作返回地址。CPU尝试执行这个地址的指令,从而导致程序出错,这就是堆
栈溢出
现象。
xmega
栈溢出
答:
在使用 XMEGA 微控制器编程时,
栈溢出
可以发生在以下情况:1. 函数调用过深。在程序中使用了太多的函数嵌套,导致栈空间不足以存放所有函数调用的返回地址、局部变量等数据。2. 局部变量过多或过大。如果函数中声明了过多的局部变量或某一局部变量占用的空间过
大,
也会导致栈空间不足。3. 递归调用。
如何解决java中混合快速排序法
栈溢出
(stack overflow)
答:
1. 应该是您的递归算法调用的层级太多导致的。优化下算法,让调用层级减低才行。2. 这种情况自己维护个
栈
序列,用循环的方式来处理应该就可以了。例如可以是:1. (start,end)入栈 2. 栈是否为空,若为空则退出 3. 弹出栈定元素,如果start-end<breakpoint使用插入排序,完成后回到2。否则对[...
大家正在搜
怎么给数组申请空间
数组出栈
怎么用栈构造数组
栈和数组的区别
数组是分配在栈中的吗
数据结构9个数组做栈最多
数组申请动态内存
new申请数组
二维数组动态内存申请
相关问题
这个简单的程序,为什么堆栈溢出?
栈溢出,怎么把变量和数组放到堆里?
C语言:数组长度不够大,怎么办?
C语言问题
关于C语言中定义数组大小的问题(最多能定义多少)
这样写快速排序函数为什么会栈溢出?
c++ 1004max sum 怎么错了
c语言数组申请