为何不能定义较大的结构数组
初学BCB,最近在试着编一个程序来分析位图上的像素。
此位图大小为2592*1944。
我定义了了一个结构来储存每个像素的信息,如下:
struct S_Px
{
int Bri; //像素亮度
int Siz; //此像素周围高亮像素的个数
bool Scaned; //此像素是否已被检测
};
struct S_Px Px[2592][1944];
这个结构写出来就一直出错,开始搞不明白,后来无意中把数组改小了就可以运行了。
甚至如果结构中去掉一个成员也可以运行,难道是内存小了?
这该怎么解决,我实在没办法了,求各位不吝赐教。
[解决办法]
struct S_Px Px[2592][1944]太大,
不能作为局部变量,因为局部变量的空间在堆栈中分配,
可能会造成堆栈溢出.
解决办法有以下几种:
(1)改为全局变量
(2)改为 static struct S_Px Px[2592][1944];
(3)使用new操作来动态分配.