Memory 对内存使用感到困惑

Memory 对内存使用感到困惑,memory,ram,Memory,Ram,我在和一个小的Pololu 3pi机器人一起工作。它有32KB的闪存、2KB的SRAM和1KB的EEPROM。我在机器人上运行了以下代码: #include <pololu/3pi.h> int main(){ int nums[1000]; nums[0] = 50; nums[999] = 100; clear(); print_long(nums[0]); // prints 50 lcd_goto_xy(0, 1);

我在和一个小的Pololu 3pi机器人一起工作。它有32KB的闪存、2KB的SRAM和1KB的EEPROM。我在机器人上运行了以下代码:

#include <pololu/3pi.h>

int main(){
    int nums[1000];

    nums[0] = 50;
    nums[999] = 100;

    clear();
    print_long(nums[0]); // prints 50
    lcd_goto_xy(0, 1);
    print_long(nums[999]); // prints 100

    while(1);
}
#包括
int main(){
整数单位[1000];
nums[0]=50;
nums[999]=100;
清除();
打印长度(nums[0]);//打印50
lcd_goto_xy(0,1);
print_long(nums[999]);//打印100
而(1),;
}
我的预期是它会崩溃,因为它的内存用完了 存储整个
nums
数组。但它不仅没有崩溃,还正确地打印了分配的数字


为什么?这不是占用了4000字节的内存吗?

也许
int
s只有2个字节?尝试打印
sizeof(int)
。你说得对!但是,当我将其升级到2000
ints
时,“问题”仍然存在……您是否使用扩展工具包附带的mbed开发板?这会给你额外的内存。我有一个,我只是不使用它。好吧-我唯一能想到的另一件事是,你可能会看到模寻址(即地址每2k字节环绕一次)-看看你是否可以在索引0、1024、2048、3072处向数组写入不同的值,4096-我怀疑,当你读回它们时,你会发现从这些位置中的任何一个获得相同的值。