内存管理

    //内存:5个区域

    //1、栈区 --系统分配以及回收内存。-函数体内-创建的变量分配在栈区。

    //int a = 10; //a存在内存的栈区 10存在常量区


    //2、堆区(重点 ---动态内存分配)//由用户 (程序员)分配和回收

//如果未回收内存,那么容易内存越来越少,导致内存不够用,程序崩溃,如果没有达到不够用,程序安然无恙。当程序退出时,堆内存由系统回收

    //3、常量区 用于存放常量的内存区域

        //10,1.5,'1',"hello"

    //4、静态区(全局区)函数体外创建的变量 //定义在函数体外面的变量,由系统开辟空间,程序运行过程中一直存在,直到程序退出由系统回收。

    //5、代码区 main 函数//存放源代码编译结果的区域。



    //void *malloc(unsigned int size);

    //malloc函数向系统申请分配size个连续的内存空间,返回值是void

    // void*属于指针类型 程序员需要自己需要转换成自己需要的类型

    //void *p = malloc(10); //向系统申请十个大小的分配空间


    //malloc 分配指定大小的内存空间,但是不会把分配的空间清零

    

    

    //free(p);//释放堆空间 标记删除 不清除内容

    

    

    

//    char *str = malloc(8);

//    strcpy(str, "iphone");

//    printf("%s",str);

//    free(str);

//    

//    int  *p = malloc(4);

//    *p = 30;

//    printf("%d\n",*p);

//    

//    free(p);

    

//    int *arr = malloc(sizeof(int)*5);//20 = 4*5

//    arr[0] = 18;

//    arr[1] = 12;

//    arr[4] = 25;

//    arr[3] = 9;

//    for (int i = 0; i < 5; i ++)

//    {

//        printf("%d ",arr[i]);

//    } //没有赋值的还是保留原值

//    int (*p)[3] = malloc(sizeof(int) * 2 * 3);

//    p[0][0] = 1;

//    p[0][1] = 24;

//    p[0][2] = 8;

//    //去*加方括号 p[][3]

//    

//   typedef struct  stu

//    {

//        char name[20];

//        int age;

//    

//    }Student;

//  int main(int argc, const char * argv[])

//{

//    Student *p = malloc(sizeof(Student));

//    strcpy(p-> name,"zhangsan");

//    p->age = 20;

//    printf("%s %d",p->name,p->age);

//    

//    return 0;

//

//}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值