关于数组定义在函数外面可实现正常功能,定义在里面不行的原因

eg:

  u8 buffer[4096];      //如果将buffer定义为全局变量功能可正常实现

  int main()

  {

    //u8 buffer[4096];  //如果将buffer定义为局部变量无法实现正常功能

    u8 *pbuffer;

    pbuffer=buffer;

    .............

  }

  函数内的变量是局部变量,占用栈空间
  函数外的变量是全局变量,占用堆空间

   
     栈空间可以简单地理解为内存中一小块专用的地方,效率略高,大小有限
  堆空间可以简单地理解为近似整个内存,效率略低,大小近似内存大小

  上面例子中定义的局部数组太大,一般栈内存很小,因此很可能是栈溢出了
  这个异常不能被捕获,按MSDN的说法“您无法捕获堆栈异常,因为异常处理代码可能需要堆栈空间”

猜你喜欢

转载自www.cnblogs.com/dongry/p/9931197.html
今日推荐