C++中由数组大小引起的栈溢出
2011-07-02 17:08
281 查看
在写C++程序中最怕的一问题应是,程序在debug下可以正确无误的运行而在release模式下却发生内存访问的错误。最近就遇到了一个因数组引起的栈溢出问题,费了好长时间才发现。
用VS2005写程序,默认的栈大小是1M。我们在程序中的变量及静态数组都是储存在栈中的。一旦变量和静态数组的规模超过了栈的大小,就会发生栈溢出错误。如运行如下一段代码是无法成功的:
#pragma once
#include <iostream>
using namespace std;
int main()
{
int a[1024*256];
cerr<<"It works"<<endl;
return 0;
}
静态数组a的大小为:1024*256*4字节 > 1M字节,因此程序无法正常运行。在项目->属性->链接->系统中增大栈大小后,可以正常运行上面这个程序。
原创文章,转载请注明: 转载自点滴成河
用VS2005写程序,默认的栈大小是1M。我们在程序中的变量及静态数组都是储存在栈中的。一旦变量和静态数组的规模超过了栈的大小,就会发生栈溢出错误。如运行如下一段代码是无法成功的:
#pragma once
#include <iostream>
using namespace std;
int main()
{
int a[1024*256];
cerr<<"It works"<<endl;
return 0;
}
静态数组a的大小为:1024*256*4字节 > 1M字节,因此程序无法正常运行。在项目->属性->链接->系统中增大栈大小后,可以正常运行上面这个程序。
原创文章,转载请注明: 转载自点滴成河
相关文章推荐
- C++中由数组大小引起的栈溢出
- VS2013 c++ 常量定义数组大小报错
- C++ 定义数组大小问题
- 【c++程序】数组排列大小方法
- 【C++学习】通过输入数来确定一个数组的动态大小
- C/C++学习之C提高----C程序数组排序、数据类型(大小,别名,封装)、变量、程序的内存四区模型(栈,堆,全局,代码区)
- 用C++的模板类定义一个万能数组,数组元素类型任意,数组大小也任意
- c++未知数组大小如何创建
- 思路:C++数组大小的计算可以根据所占空间的大小。
- C++实现数组大小运算符dimensionof()
- C/C++传入数组及怎样限定传入数组的大小
- C++中数组的大小(SizeOfArray)
- c++: 获取delete[]中的数组大小
- c++中bool数组与bitset,vector<bool>的使用与占用空间大小对比
- 【探讨】C++ delete[] 是如何知道数组大小的
- 如何求数组的大小 C++
- [C,C++] - 妙用0元素数组实现大小可变结构体
- C++计算数组大小、数组拷贝
- C++STL中vector(可变大小数组)用法总结
- C++面试题5:建议在函数里面不要用sizeof算数组的大小