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存储结构 堆分配
     战区 兑取
     
     


  • 相关阅读:
    HDU4474 Yet Another Multiple Problem BFS搜索
    HDU4473 Exam 数学分析
    2013ACM多校联合(4)
    POJ1273 网络流...
    HDU4472 Count 递推
    POJ1149 PIGS 网络流
    UVA10881 Piotr's Ants 想法题
    javascript js string.Format()收集
    修改 设置 vs.net 网站 调试 设为 起始页
    【转】HTML5杂谈 概念与现行游戏 割绳子 宝石迷阵
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4234831.html
Copyright © 2011-2022 走看看