今天我将LED,DMA,I2C,USART,TIMER,MALLOC,ADC,LAN放在一起。因为用到网络通信这块,初始化 my_mem_init(SRAMIN) 的时候,也就是初始化内部内存池,采集的ADC值是存放在一个u16 buf[32]里面,结果取出数据的时候,发现异常,比如取出数组一个buf[0]的时候,发现数值居然是0xc2d3;相当于已经超出ADC采集的最大12位 0xfff,当我屏蔽掉 my_mem_init(SRAMIN) 这个时候,结果正常了。网上关于内存管理,资料很少。请求原子哥或者高手,解答一下我的燃眉之急。谢谢
是全局变量,我也觉得很奇怪,但是确实发生了这个现象。管理的数组改小了,也没用,是不是内存管理导致内存地址和我的buf内存地址有交叉还是什么?
是啊,我也觉得很奇怪。但是屏蔽掉了内存初始化函数,就正常了。原子哥,能解释一下吗?
一周热门 更多>