这个算是rtt的BUG么??多次rt_realloc后 free会RT_ASSERT
申请内存,然后多次改变内存大小,最后free就死机了{:sweat:} u8* Dbuf=rt_malloc(1024*50);rt_realloc(Dbuf,6000);
rt_realloc(Dbuf,2000);
rt_realloc(Dbuf,1000);
rt_realloc(Dbuf,4000);
rt_realloc(Dbuf,8000);
rt_thread_delay(100);
rt_free(Dbuf);
当执行到rt_free的时候就死在 RT_ASSERT(mem->magic == HEAP_MAGIC);这里了,
版本是1.2.0 ,lpc1788平台,heap设置到外部sdram,一共有将近10M可以使用,不会内存不足,单次realloc不会死机,多次才会有这个现象 realloc
语法:#include <stdlib.h>
void *realloc( void *ptr, size_t size );功能: 函数将ptr 对象的储存空间改变为给定的大小size。 参数size可以是任意大小,大于或小于原尺寸都可以。 返回值是指向新空间的指针,如果错误发生返回NULL。
出错的问题是
1.rt_calloc的用法该是 Dbuf= rt_realloc(Dbuf,6000);
2.你第一次分配的空间如果一直大于后面的,你的问题将会被隐藏,直到rt_realloc(Dbuf,8000);才暴露出来{:titter:} amwox 发表于 2013-8-10 09:29 static/image/common/back.gif
出错的问题是
1.rt_calloc的用法该是 Dbuf= rt_realloc(Dbuf,6000);
2.你第一次分配的空间如果一直大于后面 ...
Dbuf= rt_realloc(Dbuf,6000);
已经改成这样了,呵呵,是我眼花 没看到rt_realloc前面是void* 只看到了void
但是现在realloc还是经常返回null,可是我的内存 mem init, heap begin address 0xa0168c28, size 32076736
打死都用不完,为何分派不到?realloc 3到4次就会返回null了 每次不超10k大小的
页:
[1]