【发布时间】:2012-06-20 05:53:32
【问题描述】:
在编写 C++ 代码时,我了解到使用堆栈来存储内存是个好主意。
但最近我遇到了一个问题:
我有一个实验,其代码如下所示:
void fun(const unsigned int N) {
float data_1[N*N];
float data_2[N*N];
/* Do magic */
}
代码随机出现序列错误,我不知道为什么。
原来问题是我试图在我的堆栈上存储很大的东西,有没有办法检测到这个?或者至少检测到它出错了?
【问题讨论】:
-
您的问题是关于 C 还是 C++?
-
我认为你不能使用 C/C++ 中的变量来初始化堆栈上的数组!
-
您的数据有多大?我建议您使用 malloc/free 在堆中存储 100KB 以上的数据。 (其他人可能会建议一个更低的界限)
-
哦,拜托,你怎么能抗拒使用stackoverflow标签?
-
g++ 也允许在 C++ 中使用 VLA,作为扩展。
标签: c++ stack segmentation-fault stack-overflow