[英]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.