haihuang-402384 发表于 2014-12-23 09:33:12

晓枫VS枯叶 发表于 2014-12-22 16:40
楼主可以把gpsRevData添加到watch窗口看看到底这个数组里面的数值是否发生变化! ...

我昨天试了下用ucos内存管理的内存申请方式定义了一个二维数组,然后再去get一个内存块,发现跟之前一样会自己变化,然后接收到数据就段错误,但是我发现之前定义的一维数组正常了,地址跟之前的不一样,之前的那块地址会变,现在被二维数组占用了,所以它有新的地址,然后新的地址正常。那块地址到底是怎么回事?如果复位后,那个一维数组会不会可能申请到那块会变的地址?那这样的话程序不就有时好有时坏,难道要我指定地址才行?谁来解释一下为什么

小贾-370388 发表于 2014-12-23 14:09:10

按理说是不应该的,定义数组后会由系统自动分配内存的,分配的内存不会冲突的,除非是你那里操作了这个地址

haihuang-402384 发表于 2014-12-23 14:36:52

小贾-370388 发表于 2014-12-23 14:09
按理说是不应该的,定义数组后会由系统自动分配内存的,分配的内存不会冲突的,除非是你那里操作了这个地址 ...

我就是想不通,我写的部分确实没对其进行操作,那就只可能是操作系统了,我有空再调调看具体是哪些语句导致它变化的

damiaa 发表于 2015-1-4 14:17:55

内存溢出, 数组出界 你在这两者之间找问题。那个数组的gpsRevDataSub要在调用之前判断一下是否小于90-1 ,然后调用 gpsRevData

haihuang-402384 发表于 2015-1-6 10:57:30

damiaa 发表于 2015-1-4 14:17
内存溢出, 数组出界 你在这两者之间找问题。那个数组的gpsRevDataSub要在调用之前判断一下是否小于90-1 , ...

问题已经找到了,是我自己创建任务时,任务堆栈的栈顶地址传错了
页: 1 [2]
查看完整版本: stm32在UCOS下定义数组问题