zoukankan      html  css  js  c++  java
  • 数据结构复习之C语言malloc()动态分配内存概述

    #include <stdio.h>
    #include <malloc.h>
    
    int main(void)
    {
        int a[5] = {4, 10, 2, 8, 6};
        // 计算数组元素个数
        int len = sizeof(a)/sizeof(a[0]);
        int i;
    
        //printf("%d", len);
    
        // sizeof(int) int类型的字节数
        // 动态分配内存
        // malloc返回第一个字节的地址
        int *pArr = (int *)malloc(sizeof(int) * len);
    
        for(i = 0; i < len;i++)
            scanf("%d", &pArr[i]);
    
        for(i = 0; i < len;i++)
            printf("%d
    ", *(pArr + i));
    
        free(pArr); // 把pArr所代表的动态分配的20个字节的内存释放
    
        return 0;
    }

    跨函数使用内存
    函数内的局部变量,函数被调用完之后,变量内存就没有了。
    如果是一个动态的变量,动态分配的内存必须通过free()进行释放,不然只有整个程序彻底结束的时候
    才会释放。
    跨函数使用内存实例:

    #include <stdio.h>
    #include <malloc.h>
    
    struct Student
    {
        int sid;
        int age;
    };
    
    struct Student *CreateStudent(void);
    
    int main(void)
    {
        struct Student *ps;
    
        ps = CreateStudent();
        ShowStudent(ps); // 输出函数
    
        return 0;
    }
    
    struct Student *CreateStudent(void)
    {
        // sizeof(struct Student) 结构体定义的数据类型所占用的字节数
        struct Student *p = (struct Student *)malloc(sizeof(struct Student)); // 创建
        // 赋值
        p->sid = 99;
        p->age = 88;
        return p;
    };
    
    void ShowStudent(struct Student *pst)
    {
        printf("%d %d
    ", pst->sid, pst->age);
    }
  • 相关阅读:
    关于Unity中的NavMeshAgent的remainingDistance问题
    关于Unity中MonoBehaviour的构造函数
    【Unity】Domina-Game总结与反思
    初步理解IOC和DI和AOP模式
    简单并查集归纳
    括号匹配-记错心得
    Django博客项目思路整理
    找零问题
    连续子序列最大和的O(NlogN)算法
    Python-demo(photo)
  • 原文地址:https://www.cnblogs.com/lqcdsns/p/6582066.html
Copyright © 2011-2022 走看看