c中分配的内存部分是什么

时间:2016-02-21 14:33:39

标签: c arrays memory microcontroller

在c中,当你声明一个像int buffans[46];这样的数组时,这个内存的哪一部分被创建?

我问的原因是因为当我到达这部分代码时,我的mcu似乎挂了,但是当我使用较小的数组int buffans[26];时,它可以正常工作。

我想知道我的内存是否用完了?

void getRes(int length){
  int i;
  int buff[46];
  for (i = 0; i < length; i++)
  {
    buff[i] = getch(UART_7)); 
  }
  buff[i] = 0;
  TI_PRINTF("\nANS ");
  for( i = 0; i < length; i++)
  {
    TI_PRINTF("[%x]", buff[i]);
  }
  TI_PRINTF("\n");
}

2 个答案:

答案 0 :(得分:1)

在发布的代码中,数组是在堆栈上创建的。

答案 1 :(得分:0)

它分配在&#34;堆栈&#34;,但是你的MCU的编程文档应该描述&#34;堆栈&#34;实际上是为了你的代码。

如果它确实缺少内存问题(因为堆栈+堆需要8KB才能与每个进程/线程共享),请注意您在函数中不需要数组:

void getResponse(int length){
  int i;

  TI_PRINTF("\nANS ");
  for( i = 0; i < length; i++)
  {
    TI_PRINTF("[%x]", getch(UART_) );
  }
  TI_PRINTF("\n");
}