brew平台内存释放的有关问题
发布时间:2010-05-30 20:17:07 文章来源:www.iduyao.cn 采编人员:星星草
brew平台内存释放的问题
今天遇到了一个很让我匪夷所思的问题,问题大概是这样的
char *p=(char *)MALLC(20);
然后对指针指向的内容进行了赋值,到这里都没有问题。
然后我将指针p赋值给了指针m,m同样是一个指向char类型的指针
m=p;
然后进行内存的释放,我使用的指针m对那块内存进行释放。
代码如:
AEEHeap_free(m);
在进行释放的时候,系统就崩溃了。
然后我使用指针p对那块内存进行释放,这样就没有问题了。
问题虽然解决了,但是问题的原因始终想不清楚。
请问各位高手,我这样指针之间之间赋值应该没什么问题吧。为什么会系统崩溃呢?难道是是释放的时候内存越界了?
在ARM编译器中,内存是如何释放的?编译器如何知道这块内存的大小?编译器是否会将我们手动分配的内存的指针所指向的内存的大小保存起来,在内存释放的时候去查询这个大小,然后再进行内存的释放?
还请各位高手不吝赐教
------解决方案--------------------
你是写动态应用还是静态应用呢?AEEHeap_free这个函数是静态应用时才可以用的,你必须使用FREE
------解决方案--------------------
可以先尝试把AEEHeap_free换成FREE,应该说FREE(p)和FREE(m)都是可以的。至于为什么崩溃,可能还是和AEEHeap_free的调用有关,当然也有可能是其他原因。
至于你说的编译器是否会将内存的大小记下,这个是不会的。记录内存块大小是内存管理模块做的事情,你可以理解为AEE Heap模块会做这样的事情。
------解决方案--------------------
分配内存的函数和释放内存函数要配套。
在释放的时候看看,两个指针的值是否相同。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
什么情况下应用会收到EVT_KEY_HOOK_XXX事件
最近调代码的时候,发现应用莫名其妙地收到了EVT_KEY_HOOK_XXX事件,而没有捕获到我真正...
-
怎么让数字转化成字符串?
我的程序,需在手机上显示一些记录的条数,这些条数不是固定的,视情况而定,我需要把记录的条数显示到手机...
-
如何获取基站CellID信息
RT
------解决方案--------------------
IPOSDET_GetSectorInfo这个接口...
-
文本的字体显示问题;和保存.txt时,在模拟器上保存成功,到真机上就保存失败,这是什么原因?
我资源管理里面加载的汉子是直接从网上下载...
-
BREW如何获取手机号码
BREW如何获取手机号码
------解决方案--------------------
如果在联网的时候使用了CTWAP的网关,可以从ht...
-
关于BREW里面的电池条问题?怎么才能知道这个电池条是否处于关闭或者打开的状态?
C/C++ code
HTC_SetAnn(pMe->a.m_pIDisplay,0);
...
-
我快崩溃了
切分一行两列的窗口时,左边的视图类是:(一个对话框资源,里面包含树形控件,同时为该对话框添加了一个类,但基类是CFormView)。...
-
关于BREW资源编辑器,里面加载的汉字的极限?
我用资源编辑器加载汉字,我大量的加载汉字,结果就出现问题。加载几百个汉字,模拟器上不会...
-
BREW里面的动画是怎么播放的?
我用了 高通SDK 下的 BCI软件编辑了个 4帧的动画,保存成.bci文件,然后通过资源管理器加载进去。
ISHEL...
-
急啊,求大侠啦!
各位大侠,小弟初学BREW MP,现在已安装BMP_SDKMP_7.10.12_ZHCN_SETUP,在VS 2010的工具栏里也有BMP的插件,但是为什么插...