51里面init_mempool()和free(),malloc()函数的使用

raymondcai1995 2014-11-24 07:40:19
我用51编写了一个动态内存程序,用malloc()开辟动态内存,用free()释放内存,在释放之前用1602液晶显示malloc()开辟的动态数组的每个元素的值 发现如果不给init_mempool()函数初始化液晶无法显示正常的字符 请问我要怎么给init_mempool()函数初始化 麻烦各位给我看看
没初始化给的警告,并且无法实现显示功能
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_INIT_MEMPOOL?INIT_MEM
...全文
1082 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
我不懂电脑 2014-11-26
  • 打赏
  • 举报
回复
在PC机上调用malloc()之前不需要初始化内存池,因为操作系统掌管着所有内存 而对于C51又有不同,由于没有操作系统,需要分配为动态内存的区间并不清楚,需要头文件<stdlib.h>故需调用init_mempool来初始画内存池。 void init_mempool (void _MALLOC_MEM_ *p, unsigned int size);//起始地址和大小 用malloc()和realloc()动态分配的内存也可能包含垃圾数据,用calloc()获得的内存为全零。
raymondcai1995 2014-11-26
  • 打赏
  • 举报
回复
引用 2 楼 songhtao 的回复:
在PC机上调用malloc()之前不需要初始化内存池,因为操作系统掌管着所有内存 而对于C51又有不同,由于没有操作系统,需要分配为动态内存的区间并不清楚,需要头文件<stdlib.h>故需调用init_mempool来初始画内存池。 void init_mempool (void _MALLOC_MEM_ *p, unsigned int size);//起始地址和大小 用malloc()和realloc()动态分配的内存也可能包含垃圾数据,用calloc()获得的内存为全零。
C51里面的内存具体是怎么分配的 列如定义一个全局变量 一个静态变量 这些变量是分配到那个内存区的 定义一个动态数组又是分配到哪里的 是外部ram还是内部ram 请你具体说明白c51里面内存区存放数据的地址 并对整个内存区做一个简要的说明 或者可以建议我一些参考文献然后去阅读一下
xjq2003 2014-11-26
  • 打赏
  • 举报
回复
将内存初始化为0
QIUSQJF 2014-11-24
  • 打赏
  • 举报
回复
malloc一般只是开辟了内存,也就是可以使用这些地址了,但是这些地址中的值可能是垃圾值,你可以试试memset,全部初始化为0看看……

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧