黑马程序员技术交流社区

标题: C语言内存动态分配函数 [打印本页]

作者: flywithde    时间: 2015-8-2 10:04
标题: C语言内存动态分配函数
malloc:
    格式: void * malloc(unsigned size);
    说明:从内存的堆区分配大小为size个字节的连续的内存空间,如果内存分配成功  返回内存的首地址,失败则返回null,因此在分配内存的时候应该先判断是否分配成功,然后再使用这段内存
    使用:
                //从内存中申请一块内存空间,可以存储4个整数
                // = 赋值,要求等号的左右两侧的类型要一致
                //注意:malloc 申请的内存空间,如果我们不赋值是垃圾数
                int *p = (int *)malloc(4*sizeof(int));   //16个字节
                //使用一个函数给malloc申请的空间进行初始化
                memset(p,'a',16);
calloc:
    //callloc 分配指定块数和长度的内存空间
    //格式:calloc(块数,长度)
    //分配了4块,每一块内存长度为4的内存空间
    //他们的地址也是连续的
    //注意事项: calloc 它使可以帮我们自动的初始化为0
    int *p = (int *)calloc(4, sizeof(int));   //16个字节

realloc:
    用途:函数可以给已经存在的空间扩充大小
    注意:使用realloc函数返回的是新申请的内存空间的首地址,必须将该地址重新赋值给指针变量才可   
            使用新分配的内存空间
   用法:
            int *p = (int *)malloc(4*sizeof(int));   //16个字节
            //realloc 函数可以给已经存在的空间扩充大小
            p = realloc(p, 40*sizeof(int));
free函数:
用途:释放动态内存分配函数分配的内存空间,不然会造成内存泄露
    用法:
                int *p = (int *)malloc(4*sizeof(int));   //16个字节
                //当不再使用动态分配的内存空间时,应该使用free()函数释放内存空间
                free(p);
                //free(p)以后,p是一个野指针,需要将其指向置为空
                p = NULL;


作者: flywithde    时间: 2015-8-2 10:05
为自己点赞




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2