STM32進行動態內存分配是需要注意動態內存分配大小不要超過.S文件中設置Heap Size大小
如圖所示:
0x4000 :可以分配得最大字節是16384bytes
這個地方malloc的大小超過了16384,所以程序在運行時會分配失敗,產生硬件異常。
如有不對的地方,請指出,萬分感謝。
以下摘自網絡:
在函數中使用malloc,如果是大的內存分配,
而且malloc與free的次數也不是特別頻繁,使用malloc與free是比較合適的,
但是如果內存分配比較小,而且次數特別頻繁,那么使用malloc與free就有些不太合適了。
因為過多的malloc與free容易造成內存碎片,致使可使用的堆內存變小。
尤其是在對單片機等沒有MMU的芯片編程時,慎用malloc與free。
如果需要對內存的頻繁操作,可以自己實現一個內存管理。
使用動態內存分配,應分不同的應用場合。
對於在操作系統上運行的程序,實際的物理內存分配與釋放使用操作系統來實現的,即使程序調用了 malloc和free物理內存並不會馬上變化。物理內存的變化,直到系統的內存管理操作時才發生。
對於裸機跑在MCU上的程序,分配與釋放內存都會造成實際物理內存的變化。因為此時物理內存的分配是由自己實現的,而內存管理我們自己並沒有去做。這樣,盲目的使用malloc與free恰恰並不好,反而會造成內存的不恰當使用。甚至於內存溢出。
所以,動態內存的使用前提是有一套好的內存管理方法,這樣動態內存的使用才會合理使用內存。如果沒有合適的內存管理代碼,還是用靜態內存好一些。