码迷,mamicode.com
首页 > 其他好文 > 详细

堆的申请和释放

时间:2016-03-02 23:39:57      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

#include <stdio.h>

void func1(void);
void func2(void);
void func3(void);
void func4(void);
int main(int argc, char ** argv){

    func4();
    
    



    getchar();

    return 0;


}

/** 
    malloc跟 calloc之间的区别

*/
void func4(void){

    char *p1 = NULL;
    p1 = malloc(sizeof(char)* 10);
    p1[0] = a;
    printf(p1);
    printf("\n");
    free(p1);
    //屯屯屯屯屯葺j凹碶 。某一次的运行结果。可见如果不赋初值的话,就一定有值。
    p1 = calloc(10,sizeof(char));
    p1[0] = a;
    printf(p1);
    free(p1);
    //这样就可以看到运行效果了。因为帮助过我们进行初始化,所以后面p1里面的每个值都是0
    //遇到0就是 文件结尾。所以 不再往下执行了

    //func4的运行效果图:

技术分享


}
/** 
    写一个这么大的数,就是为了提醒自己,一定要记得free掉。
*/
void func3(void){
    int *p = malloc(sizeof(int)* 1000000);//我们说了这是一个int型数组
    *p = 200;//给*p赋值,就是只给数组中的第一个元素赋了值。剩下999999个还没赋值呢,但是不代表里面没值
    //任何一块儿从内存里面要出来的空间,都有值,有可能是0,当然如果是其他程序退出剩下的,那么就什么都有可能了。
    //但通常都不是0。
    //所以用 calloc申请的内容帮我们默认设置了初值0.
    printf("p的地址%p,p的大小%d", p, *p);
    free(p);
    // 运行结果:p的地址004D0040,p的大小200

}

/** 
    malloc(sizeof(int)*10)
    跟 malloc(sizeof(char)*10)
    分别代表什么怎么使用

*/
void func2(void){

    int * p = malloc(sizeof(int)* 10);//申请一个整型数组长度为10  sizeof() = 40
    p[0] = 1;
    p[1] = 2;
    p[2] = 3;
    for (int i = 0; i < 3; i++){
        printf("%d", p[i]);
    }
    free(p);
        
}
/** 
    引入malloc

*/
void func1(void){
    char * p = malloc(sizeof(char)* 10);//申请一个char型数组,长度为10 zizeof() = 10

    strcpy(p, "nihao");

    printf(p);

    free(p);
}

 

堆的申请和释放

标签:

原文地址:http://www.cnblogs.com/letben/p/5236682.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!