From 20ae7a629bef8e571aca001e9df4d314c931b04e Mon Sep 17 00:00:00 2001 From: zhouji <956133287@qq.com> Date: Sun, 12 Dec 2021 11:16:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[update]=20=E4=BD=BF=E7=94=A8memheap?= =?UTF-8?q?=E5=86=85=E5=AD=98=E7=AE=A1=E7=90=86=E6=97=B6=EF=BC=8Crt=5Fmall?= =?UTF-8?q?oc=200=E9=95=BF=E5=BA=A6=E8=BF=94=E5=9B=9ERT=5FNULL,=20?= =?UTF-8?q?=E4=B8=8Eslab=E4=B8=8E=E5=B0=8F=E5=86=85=E5=AD=98=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=AD=89=E7=AE=97=E6=B3=95=E4=BF=9D=E6=8C=81=E4=B8=80?= =?UTF-8?q?=E8=87=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/memheap.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/memheap.c b/src/memheap.c index 68a15d1a8e4..9c3f570f294 100644 --- a/src/memheap.c +++ b/src/memheap.c @@ -850,6 +850,10 @@ void *rt_malloc(rt_size_t size) { void *ptr; + /* zero size, return RT_NULL */ + if (size == 0) + return RT_NULL; + /* try to allocate in system heap */ ptr = rt_memheap_alloc(&_heap, size); #ifdef RT_USING_MEMHEAP_AUTO_BINDING From 199b734ef69cebf76cdcf4b2a80e6bf3a80f484f Mon Sep 17 00:00:00 2001 From: zhouji <956133287@qq.com> Date: Sun, 12 Dec 2021 11:24:35 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[update]=20=E4=BD=BF=E7=94=A8memheap?= =?UTF-8?q?=E5=86=85=E5=AD=98=E7=AE=A1=E7=90=86=E7=AE=97=E6=B3=95=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=AF=B9rt=5Fsystem=5Fheap=5Finit=E4=BC=A0=E5=85=A5?= =?UTF-8?q?=E7=9A=84=E5=9C=B0=E5=9D=80=E8=BF=9B=E8=A1=8C=E5=AF=B9=E9=BD=90?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/memheap.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/memheap.c b/src/memheap.c index 9c3f570f294..e96b402bcf6 100644 --- a/src/memheap.c +++ b/src/memheap.c @@ -832,13 +832,16 @@ static struct rt_memheap _heap; */ void rt_system_heap_init(void *begin_addr, void *end_addr) { - RT_ASSERT((rt_uint32_t)end_addr > (rt_uint32_t)begin_addr); + RT_ASSERT((rt_size_t)end_addr > (rt_size_t)begin_addr); + + rt_size_t begin_align = RT_ALIGN((rt_size_t)begin_addr, RT_ALIGN_SIZE); + rt_size_t end_align = RT_ALIGN_DOWN((rt_size_t)end_addr, RT_ALIGN_SIZE); /* initialize a default heap in the system */ rt_memheap_init(&_heap, "heap", - begin_addr, - (rt_uint32_t)end_addr - (rt_uint32_t)begin_addr); + (void *)begin_align, + end_align - begin_align); } /**