繁体   English   中英

在c中将数组的哪些内存分配给数组

[英]what part of memory are array allocated in c

在c中,当您声明一个类似int buffans[46];的数组时int buffans[46]; ,这是在哪一部分内存中创建的?

我问的原因是因为当我到达这部分代码时,我的mcu似乎挂起了,但是当我使用较小的数组int buffans[26];时,我的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");
}

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

它是在“堆栈”中分配的,但是您的MCU的编程文档应描述代码的“堆栈”实际上是什么。

如果确实存在内存不足的问题(由于堆栈+堆需要8KB以便与运行中的每个进程/线程共享),请注意,函数中不需要数组:

void getResponse(int length){
  int i;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM