C++(实际是C的语法)定义数组时出错,代码如下:
float t1[9830400];
调试时触发Stack overflow错误(可执行文件运行时,是报段错误):
Unhandled exception at 0x00007FF71A102F68 in ***.exe: 0xC00000FD: Stack overflow (parameters: 0x0000000000000001, 0x000000F0C5A03000).
这是由于函数内申请的变量,数组,是在栈(stack)中申请的一段连续的空间。栈的默认大小为2M或1M,开的比较小(但全局变量,全局数组,静态数组(static)则是开在全局区(静态区)(static)。大小为2G,所以能够开的很大)。所以静态分配的空间不能太大。遇到要申请大的空间时,就需要动态申请或使用不连续内存。
可以使用malloc、new申请空间,或者使用array或vector替代数组。是开在堆(heap)的一段不连续的空间。
例如,使用malloc申请空间:
float *t1 = (float*)malloc(sizeof(float) * 9830400);
参考:(12条消息) C/C++数组的大小最大能有多大?_c++数组最大容量_JoannaJuanCV的博客-CSDN博客
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)