当我尝试运行这个时
int N=10000000;
short res[N];
我遇到分段错误 11
当我改变为
int N=1000000;
short res[N];
效果很好
您已经超出了操作系统指定的堆栈空间。如果您需要更多内存,最简单的方法是动态分配:
int N=1000000;
short* res = new short[N];
然而,std::vector
在这种情况下是首选,因为上面要求您free
用手记忆。
int N = 1000000;
std::vector<short> res (N);
如果您可以使用 C++11,则可以通过使用来节省一些时间unique_ptr
数组也特化:
std::unique_ptr<short[]> res (new short[N]);
上述两种自动方法仍可使用熟悉的res[index]
语法得益于重载operator[]
,但要获取您需要的内存操作的原始指针res.data()
with vector
or res.get()
with unique_ptr
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)