brew平台内存释放的问题
今天遇到了一个很让我匪夷所思的问题,问题大概是这样的
char *p=(char *)MALLC(20);
然后对指针指向的内容进行了赋值,到这里都没有问题。
然后我将指针p赋值给了指针m,m同样是一个指向char类型的指针
m=p;
然后进行内存的释放,我使用的指针m对那块内存进行释放。
代码如:
AEEHeap_free(m);
在进行释放的时候,系统就崩溃了。
然后我使用指针p对那块内存进行释放,这样就没有问题了。
问题虽然解决了,但是问题的原因始终想不清楚。
请问各位高手,我这样指针之间之间赋值应该没什么问题吧。为什么会系统崩溃呢?难道是是释放的时候内存越界了?
在ARM编译器中,内存是如何释放的?编译器如何知道这块内存的大小?编译器是否会将我们手动分配的内存的指针所指向的内存的大小保存起来,在内存释放的时候去查询这个大小,然后再进行内存的释放?
还请各位高手不吝赐教