我用51撰寫了一個動態記憶體程式,用malloc()開辟動態記憶體,用free()釋放記憶體,在釋放之前用1602液晶顯示malloc()開辟的動態陣列的每個元素的值 發現如果不給init_mempool()函式初始化液晶無法顯示正常的字符 請問我要怎么給init_mempool()函式初始化 麻煩各位給我看看
沒初始化給的警告,并且無法實作顯示功能
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_INIT_MEMPOOL?INIT_MEM
uj5u.com熱心網友回復:
malloc一般只是開辟了記憶體,也就是可以使用這些地址了,但是這些地址中的值可能是垃圾值,你可以試試memset,全部初始化為0看看……uj5u.com熱心網友回復:
在PC機上呼叫malloc()之前不需要初始化記憶體池,因為作業系統掌管著所有記憶體而對于C51又有不同,由于沒有作業系統,需要分配為動態記憶體的區間并不清楚,需要頭檔案<stdlib.h>故需呼叫init_mempool來初始畫記憶體池。
void init_mempool (void _MALLOC_MEM_ *p, unsigned int size);//起始地址和大小
用malloc()和realloc()動態分配的記憶體也可能包含垃圾資料,用calloc()獲得的記憶體為全零。
uj5u.com熱心網友回復:
將記憶體初始化為0uj5u.com熱心網友回復:
C51里面的記憶體具體是怎么分配的 列如定義一個全域變數 一個靜態變數 這些變數是分配到那個記憶體區的 定義一個動態陣列又是分配到哪里的 是外部ram還是內部ram 請你具體說明白c51里面記憶體區存放資料的地址 并對整個記憶體區做一個簡要的說明 或者可以建議我一些參考文獻然后去閱讀一下
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/110072.html
標籤:基礎類
上一篇:求解編程
