关于数组定义在函数外面可实现正常功能,定义在里面不行的原因
eg:
u8 buffer[4096]; //如果将buffer定义为全局变量功能可正常实现
int main()
{
//u8 buffer[4096]; //如果将buffer定义为局部变量无法实现正常功能
u8 *pbuffer;
pbuffer=buffer;
.............
}
函数内的变量是局部变量,占用栈空间
函数外的变量是全局变量,占用堆空间
栈空间可以简单地理解为内存中一小块专用的地方,效率略高,大小有限
堆空间可以简单地理解为近似整个内存,效率略低,大小近似内存大小
上面例子中定义的局部数组太大,一般栈内存很小,因此很可能是栈溢出了
这个异常不能被捕获,按MSDN的说法“您无法捕获堆栈异常,因为异常处理代码可能需要堆栈空间”