硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2428|回复: 5
收起左侧

[emWin] 创建界面后,在初始化是给TEXT控件单独设置回调函数,关闭这个界面时,发现内存没有

[复制链接]

3

主题

10

回帖

19

积分

新手上路

积分
19
发表于 2017-1-11 13:01:33 | 显示全部楼层 |阅读模式
创建界面后,在初始化是给TEXT控件单独设置回调函数,关闭这个界面,切换到其他界面,发现内存没有释放。没释放的内存就是TEXT空间占有的内存。当不给TEXT控件设置回调函数,当关闭界面后,动态内存就完全释放了。
这个问题怎么解决啊
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-1-11 13:35:23 | 显示全部楼层
1. 文本控件设置的什么回调函数。
2. 循环创建和关闭几次,查看是否动态内存一直减小。
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2017-1-11 13:48:04 | 显示全部楼层
谢谢你的回复
我的程序是这样的

设置回调函数

设置回调函数

回调函数

回调函数


比如给一个文本控件设置回调函数,没有释放的内存为X,给2个文本控件设置回调函数,没有释放的内存为X*2。依次类推。
还有就是每进入这个界面,然后关闭这个界面。内存都会减少。我怀疑是文本控件(添加了回调函数的文本控件)没有释放
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2017-1-11 16:03:48 | 显示全部楼层
这是一个类似的程序可以在模拟机上运行,现象也是一样的,可以 test.zip (4 KB, 下载次数: 63) 帮我看一下嘛。
从模拟机的现象看出
一个不加回调函数的文本控件释放的内存比一个使用回调函数的文本控件释放内存多28字节。
而这28个字节的内存是干什么的呢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-1-11 18:23:05 | 显示全部楼层
1. 文本控件做回调函数稍有些臃肿了,其实你直接sprintf函数转换数值为字符就可以了,用文本函数显示。

2. 如果真是文本回调函数占用的,你可以在对话框回调函数的WM_DELETE消息里面单独删除。
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2017-1-11 19:01:13 | 显示全部楼层
谢谢版主的意见,C语言没学好。这两种方法都试试看
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-14 15:52 , Processed in 0.336264 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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