Browse Source

add:内存释放前判断是否在ram

Dozingfiretruck 4 years ago
parent
commit
83b2331459
1 changed files with 11 additions and 6 deletions
  1. 11 6
      platform/common/mem/wm_mem.c

+ 11 - 6
platform/common/mem/wm_mem.c

@@ -76,13 +76,18 @@ void * mem_alloc_debug(u32 size) {
 	tls_os_sem_release(mem_sem);
 	tls_os_sem_release(mem_sem);
 	return buffer;
 	return buffer;
 }
 }
+
+extern const uint32_t __ram_end;
 void mem_free_debug(void *p) {
 void mem_free_debug(void *p) {
-    u32 cpu_sr = 0;
-	tls_os_sem_acquire(mem_sem, 0);
-	cpu_sr = tls_os_set_critical();
-	free(p);
-	tls_os_release_critical(cpu_sr);	
-	tls_os_sem_release(mem_sem);
+    if (((uint32_t)p >= (uint32_t)(&__heap_start)) && ((uint32_t)p <= (uint32_t)(&__ram_end)))
+	{
+        u32 cpu_sr = 0;
+        tls_os_sem_acquire(mem_sem, 0);
+        cpu_sr = tls_os_set_critical();
+        free(p);
+        tls_os_release_critical(cpu_sr);	
+        tls_os_sem_release(mem_sem);
+    }
 }
 }
 void * mem_realloc_debug(void *mem_address, u32 size) {
 void * mem_realloc_debug(void *mem_address, u32 size) {
     u32 * mem_re_addr = NULL;
     u32 * mem_re_addr = NULL;