动态分配内存

动态分配内存

ID:38396440

大小:33.18 KB

页数:5页

时间:2019-06-11

动态分配内存_第1页
动态分配内存_第2页
动态分配内存_第3页
动态分配内存_第4页
动态分配内存_第5页
资源描述:

《动态分配内存》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、窗体顶端C和C++语言动态内存分配一、C语言动态内存分配   要实现动态内存的分配,除了利用含指针成员的结构体之外,还需利用C语言提供的几个标准库函数。(使用时应包含头文件“alloc.h”或“malloc.h”或“stdlib.h”)   1.malloc函数  函数原型为void*malloc(unsignedintsize);在内存的动态存储区中分配一块长度为"size"字节的连续区域。函数的返回值为该区域的首地址。“类型说明符”表示把该区域用于何种数据类型。(类型说明符*)表示把返回值强制转换为该类型指针。“size”是一个无符号数。例如:p

2、c=(char*)malloc(100);表示分配100个字节的内存空间,并强制转换为字符数组类型,函数的返回值为指向该字符数组的指针,把该指针赋予指针变量pc。若size超出可用空间,则返回空指针值NULL。   2.calloc函数   函数原型为void*calloc(unsignedintnum,unsignedintsize)  按所给数据个数和每个数据所占字节数开辟存储空间。其中num为数据个数,size为每个数据所占字节数,故开辟的总字节数为num*size。函数返回该存储区的起始地址。calloc函数与malloc函数的区别仅在于一次

3、可以分配n块区域。例如:ps=(structstu*)calloc(2,sizeof(structstu));其中的sizeof(structstu)是求stu的结构长度。因此该语句的意思是:按stu的长度分配2块连续区域,强制转换为stu类型,并把其首地址赋予指针变量ps。   3.realloc函数: 函数原型为void*realloc(void*ptr,unsignedintsize)     重新定义所开辟内存空间的大小。其中ptr所指的内存空间是用前述函数已开辟的,size为新的空间大小,其值可比原来大或小。函数返回新存储区的起始地址(该地

4、址可能与以前的地址不同)。例如p1=(float*)realloc(p1,16);将原先开辟的8个字节调整为16个字节。 **动态申请的内存空间要进行手动用free()函数释放   4.free函数: 函数原型为voidfree(void*ptr)  将以前开辟的某内存空间释放。函数原型为 voidfree(void*ptr)其中ptr为存放待释放空间起始地址的指针变量,函数无返回值。应注意:ptr所指向的空间必须是前述函数所开辟的。例如free((void*)p1);将上例开辟的16个字节释放。可简写为free(p1);由系统自动进行类型转换。二、

5、C++语言动态内存分配  C++语言中用new和delete来动态申请和释放内存。   1.申请单个对象  int*p;  p=newint;或者p=newint(value); 2.动态申请数组  int*p;  p=newint[100];  这样可以申请长度为100的数组,但是不能进行初始化。 3.delete  int*p,*q;  p=newint;  q=newint[10];  deletep;  delete[]q;欢迎zdx_mail我的:资源博客空间简历设置

6、帮助

7、退出·CSDN首页·资讯·论坛·博客·下载·搜索·更多zhq_ya

8、ng的专栏·目录视图·摘要视图·订阅2011年度CSDN高校俱乐部“优秀主席”火热出炉!      点击了解英特尔云计算      2012年1月当选微软MVP的CSDN会员名单揭晓! adiblackfindsp处理器中的多堆(MultipleHeaps)技术分类: blackfinDSP2008-07-1515:01 111人阅读 评论(0) 收藏 举报 Introduction在嵌入式软件开发中,一般不建议使用动态内存分配。一个主要的原因就是嵌入式系统的资源十分有限,动态内存分配很容易导致系统运行异常。具体地讲,在blackfindsp系统中,

9、默认的堆空间在L1memory中,而L1空间是很有限的,如BF533处理器,其L1中的DATA空间只有64K。然而,不使用动态内存分配,使得代码有时看起来会比较奇怪,维护起来很不方便。本文介绍adiblackfindsp处理器提供的多堆技术,使用者除了使用系统默认的堆空间外,还可以自己建立堆空间,自由指定堆的大小和空间,动态内存从自己建立的堆空间中分配。blackfinc/c++运行时库(run-timelibrary)标准的堆管理函数:calloc,free,malloc,和relloc。系统运行时,默认只有一个堆。用户可以定义多个堆,这些扩展的堆

10、管理函数为heap_calloc,heap_free,heap_mallocandheap_realloc。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。