关于优化的问题编程需注意事项

11 篇文章 0 订阅

内存泄漏

1,Handler使用静态或者弱引用,原因:Message中存在Handler引用,而Handler如果是非静态内部类那么他是持有外部类Activity引用的,当Activity finish掉如果MessageQueue中还是Message那么Activity中的引用是不会被释放的,所以造成了内存泄漏

https://blog.csdn.net/chivalrousman/article/details/51553114

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
再次简化代码,取消串口,直接显示结果,仍然有问题!!<br><br>疑问代码如下: <br>struct _USB_DATA_STRUCT<br>{<br>/* <br> unsigned char command_data[40];//release结果正确<br> int command_index;<br> int command_size;<br> int numofnod;<br>*/<br> int command_index;<br> int command_size;<br> int numofnod;<br> unsigned char command_data[40];//release结果错误<br><br> void SetData(unsigned char* pdata,int size)<br> {<br> if(size>40)<br> {<br> AfxMessageBox("数据太大,超范围!");<br> return;<br> }<br> memcpy(command_data,pdata,size);<br> }<br>};<br><br>void CTestprjDlg::OnButton1() <br>{<br> // TODO: Add your control notification handler code here<br> unsigned char ctem[32];//错误:32,103,104; 正确:105,110<br> <br> USB_DATA_STRUCT CommandData;//要填写要发送的数据<br><br> ctem[0]=0xee;<br> ctem[1]=0x01;<br> memset(ctem+2,0x00,30);<br> <br> CommandData.SetData(ctem,32);<br><br> ShowTest(CommandData.command_data,32);<br>}<br><br>void CTestprjDlg::ShowTest(unsigned char* p,int nlen)<br>{<br> CString str = _T(""); <br> for(int i=0;i <32;i++) <br> { <br> CString tmp_str; <br> tmp_str.Format("0x%02X ", p[i]); <br> str += tmp_str; <br> } <br> m_textctrl.SetWindowText(str);<br>}<br><br>//VC6 <br><br>Debug版本没有问题,输出如: <br>EE 01 00 00 00...后面全0 <br>Release版本(按Maximize speed优化)有问题,输出如: <br>EE 01 00 00 00 00 00 00 00 00 00 00 EE 01 00 00 00 00 00 00 00 00 00 00 EE 01 00 00 00 00 00 00 <br><br>Release版本下,按以下修改没有问题。 <br>1.调整ctem的大小。小于等于104有问题,大于等于105没有问题。 <br>2.将ctem改为char* ctem; <br> ctem=new char[32]; <br> 没有问题。 <br><br>3.优化方式由Maximize speed修改为Minimize code也没问题。 <br><br>请教可能是什么原因?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值