zoukankan      html  css  js  c++  java
  • 重拾c语言之动态内存分配

    动态内存分配
    传统数组的缺点:
    1数组长度必须事先制定,且仅仅能是长整数不能是变量
    2传统形式定义的数组该数组的内存程序无法手动释放
    3数组一旦定义,系统就会为该数组分配的存储空间就会一直存在直到该函数执行结束
    4数组的长度不能再函数的执行的过程中动态的扩充或者缩小
    5不能跨函数使用
    为什么须要动态分配内存
    动态内存分配内存举例——动态数组的构造
    静态内存分配和动态内存分配
    跨函数使用内存的问题
    
    #include<stdio.h>
    void f(void)
    {
    int a[5]={0,1,2,3,4}//无法手动释放要本函数执行完之后要系统释放
    }
    int main()
    {
    f();
    }
    
    #incliude<stdio.h>
    #include<malloc.h>
    int main()
    {
    int i=5;/*静态分配*/
    /*分配八个字节p存储首地址编号*/int *P=(int *)malloic(4);/* 第二个int *强制转换成int型 *//*表示四个字节可是仅仅用首地址表示*/
    free(p);//free(p)表示把p所指向的内存给释放掉
    //p本身的内存是不能程序猿手动释放
    }/*malloc仅仅能呢过返回首地址*/
    p本身所占的内存是静态分配的  p是所指的内存的动态
    
    
    //malloc函数学习动态内存分配
    #include<stdio.h>
    void f(int *q)
    {
    *q=200;
    假设这里写free(p);则后面主函数中的无意义
    }
    int main()
    {
    int *p=(int*)malloc(sizeof(int))
    *p=10;
    printf("%d
    ",*p);
    f(p);
    /*free(p);*/这样也是错的由于已经释放内存
    printf("%d
    ",*p);
     } zhan存储结构 堆分配
     战区 兑取
     
     


  • 相关阅读:
    docker容器中查看容器linux版本
    mac 安装docker
    音视频流处理
    激光雷达
    sick 激光
    Ubuntu 14.04 安装Docker
    W: GPG error: http://ppa.launchpad.net trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 8CF63AD3F06FC659
    rtp发送 h265
    pytorch 环境搭建
    Linux 修改文件夹的用户组权限
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4234831.html
Copyright © 2011-2022 走看看