zoukankan      html  css  js  c++  java
  • 程序运行时内存管理

    1,管理运行阶段内存空间分配

    malloc()/new;

    int *pn = new int(存储的类型,内存根据此设定相应存储字节的内存)

    pn是内存地址(所以 当声明一个变量的指针变量时没初始化,声明后再来初始化则pn 接收的应该是变量在内存中的地址 &VariableName);

    *pn是存储在内存的值 用于给所指向内存中的变量赋值;

    为一个数据对象(结构,基本类型)获得并指定分配内存格式

    typeName pointer_name = new typeName;

    指定需要什么样的内存和用来声明合适的指针

     常规变量nights和指针变量值都存储在被称为栈(stack)的内存区域,而new从被称为堆(heap)或自由存储区(free store)的内存区域分配内存;
    int b;
    //int *pd = &b;
    pd = &b;
    *pd = 100;
    delete 使用完内存后,能够将其归还给内存池,

    eg.释放上面new申请的内存区域
    delete ps;将释放ps指向的内存,但不会删除指针本身,指针可以再次执行别的内存地址;
    配对的使用new/delete,不然很容易发生内存泄露(memory leak),被分配的内存再也无法使用了,神马叫泄露(就好类似你私家车车胎里面的气球,你给它放掉了,除非你再次充气,不然它自己是不能恢复的哈!)
    内存一旦泄露严重,程序将由于不断寻找更多内存而终止;

    delete不可用于释放常规变量内存;

    int * ps = new int;
    delete ps;
    delete ps;
    int jugs = 5;
    int * pi = &jugs;
    delete pi; // not allowed memory,memoey not allocated by new

    记住,请务必记住delete只能用来使用由new申请的内存;

  • 相关阅读:
    如何提高工作效率,重复利用时间
    好记性不如烂笔头
    如何应对面试中关于“测试框架”的问题
    通宵修复BUG的思考
    工作方法的思考
    别认为那是一件简单的事情
    开发人员需要熟悉缺陷管理办法
    不了解系统功能的思考
    如何布置任务
    事事有回音
  • 原文地址:https://www.cnblogs.com/ruiy/p/adds.html
Copyright © 2011-2022 走看看