野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21605|回复: 5

emWin程序运行报错GUI_Alloc.c Block to be deleted is already locked in ..

[复制链接]
发表于 2020-11-16 20:37:27 | 显示全部楼层 |阅读模式
我在emWin模拟软件上运行程序时,弹出报错窗口:GUI_Alloc.c:   Block to be deleted is already locked in _Free().
点一次“确认”,程序while循环一次,不知道是啥原因。

程序如下:
......
hItem=WM_GetDialogItem(hWin,ID_TEXT_2);
while(1)
{
     i++
     if(i>=50)
     {
         data=rand()%200;
         GRAPH_DATA_YT_AddValue(hData,data);
         TEXT_SetDec(hItem,data,4,0,0,0);
    }
    if(0) WM_deleteWindow(hWin)
    GUI_Delay(5)

}

........
回复

使用道具 举报

发表于 2020-11-17 09:27:28 | 显示全部楼层
大概是if(0)后面的语句没分号?其他的看不出问题,没完整代码,不能保证其他代码没问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-17 12:22:53 来自手机 | 显示全部楼层
那个分号是我在这里输漏了的,程序里面是有的。我只要把TEXT_SetDec这个函数屏蔽就没问题了。这个函数只要在这个while循环里面就报错。
回复 支持 反对

使用道具 举报

发表于 2020-11-17 16:41:29 | 显示全部楼层
赖__军 发表于 2020-11-17 12:22
那个分号是我在这里输漏了的,程序里面是有的。我只要把TEXT_SetDec这个函数屏蔽就没问题了。这个函数只要 ...

有可能输入到TEXT_SetDec的数据有问题,可以用sprintf转成字符串再用TEXT_SetText函数显示,也有可能程序在删除graph和text控件之后又进到if(i>=50)分支里面,这么一小段代码其实不太好判断到底是什么问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-18 19:52:31 来自手机 | 显示全部楼层
报警的图示如下,那个数字是可以在屏上显示出来,但是每显示一个数后就弹出报警窗口,按“确定”又可以显示一次,,
IMG_20201116_185901.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-20 00:45:50 来自手机 | 显示全部楼层
感谢,按上述提示改为用sprintf转换字符后就可以了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 04:02 , Processed in 0.036373 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表