MicroBlaze-malloc 函数动态分配内存溢出.doc

上传人:白大夫 文档编号:3256281 上传时间:2019-08-06 格式:DOC 页数:1 大小:13KB
返回 下载 相关 举报
MicroBlaze-malloc 函数动态分配内存溢出.doc_第1页
第1页 / 共1页
亲,该文档总共1页,全部预览完了,如果喜欢就下载吧!
资源描述

《MicroBlaze-malloc 函数动态分配内存溢出.doc》由会员分享,可在线阅读,更多相关《MicroBlaze-malloc 函数动态分配内存溢出.doc(1页珍藏版)》请在三一文库上搜索。

1、MicroBlaze:malloc 函数动态分配内存溢出首先说明一点,MicroBlaze C函数库支持标准的内存管理函数,如malloc(),calloc(), free(),这些标准的C函数库定义在libc.a中。动态内存分配从内存的程序的堆(heap)中提供。所以堆的大小会直接影响调用malloc内存分配的大小。而堆的大小(heap size)是不能在运行的时候增加,这样需要在程序编译的时候确定合适的堆的大小,在大小可以EDK下generate linker script的时候,或者直接修改*.ld文件,例如:_STACK_SIZE = DEFINED(_STACK_SIZE) ? _S

2、TACK_SIZE : 0x1000;_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x1000;如果调用malloc(int size)函数的时候出现,malloc函数返回NULL,这就说明内存分配失败,原因是:申请的内存的大小可能超过了内存本身的大小申请内存的大小超过了heap_size的大小针对以上两个原因,可以这样做修改heap_size 和增加实际的物理内存。这里要提醒一点:每次调用malloc,必须检查一下返回值,以保证实际内存分配的请求。在实践中,本人通过malloc申请一块近乎3MB内存空间用于存储图像数据,但是因为堆设置得太小了,返回值一直为NULL,内存分配失败。调用malloc代码void *zalloc(unsigned long size)void *ret = malloc(size);if (ret) memset(ret, 0, size);return ret;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1