在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");
}
答案 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");
}