A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董立正 中级黑马   /  2015-12-5 10:48  /  654 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*

malloc

void * malloc(unsigned size);
从内存的堆区分配大小为size个字节的连续空间
如果分配成功,返回内存首地址,否,返回NULL

calloc

calloc(块数,长度);
分配多少块,长度为多少的内存空间
地址连续
可以自动初始化为0

relloc


如果有足够相邻空间,重新分配需求大小空间,将原有数据复制到新空间
如果有足够相邻空间,直接扩充连接空间



*/

#include <stdio.h>
#include <stdlib.h>
void test1(){
    int *p = (int *)malloc(4*sizeof(int));
    memset(p,48,16);//初始化
    if (p != NULL) {
        //        *p = 10;
        //        *(p+1) = 100;
        //        *(p+2) = 1000;
        //        *(p+3) = 10000;
    }else{
        printf("内存申请失败!\n");
    }
    for (int i = 0; i < 4; i++) {
        printf("%c\t",*(p+i));
    }
}

void test2(){
    int *p = (int *)calloc(4,sizeof(int));
    if (p != NULL) {
        //                *p = 10;
        //                *(p+1) = 100;
        //                *(p+2) = 1000;
        //                *(p+3) = 10000;
    }else{
        printf("内存申请失败!\n");
    }
    for (int i = 0; i < 4; i++) {
        printf("%d\t",*(p+i));
    }

}
int main(int argc, const char * argv[]) {
    int *p = (int *)calloc(4,sizeof(int));
    printf("old %p\n",p);
    p = realloc(p, 40*sizeof(int));
    printf("new %p\n",p);
    if (p != NULL) {
        //                *p = 10;
        //                *(p+1) = 100;
        //                *(p+2) = 1000;
        //                *(p+3) = 10000;
    }else{
        printf("内存申请失败!\n");
    }
    for (int i = 0; i < 4; i++) {
        printf("%d\t",*(p+i));
    }

        return 0;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马