zoukankan      html  css  js  c++  java
  • C++ 指针, New, Delete 与内存分配

    使用new来分配内存:

    int *pn= new int;

    int higgens;

    int *pt=&higgens

    delete 释放内存:

    使用delete时, 要在后面加上指向内存块的指针

    如 delete pt

    注意:

    delete 只能释放使用new 关键字创造出来的指针

    int *pt=5

    delete pt  //错误

    如果new创建的是数组, 如

    int *p = new int[10]

    则在释放时, 代码应为

    delete [] p

    总是, 使用delete和new 时, 应注意一下规则:

    不要使用delete 来释放 不是new 分配的内存

    不要delete 同一块内存两次

    如果使用new [] 则delete时也也应该为delete[]

    数组与指针:

    short tell[20]

    直接对数组名取地址(&tell)时, 数组名被解释为整个数组的地址

    而直接输出tell(cout<<tell) 才是数组第一个元素的地址 = tell[0]

    这个区别体现在:

    当&tell 的结果加1时, 指针移动20个地址

    当tell 加1时, 指针移动2个地址

    动态存储:

    new 和 delete 运算符提供了一种比自动变量和静态变量更灵活的方法, 他们管理了一个内存池, 被称为自由存储空间,(堆) 这样做使得通过new生成的变量, 可以在一个函数重分配空间, 另一个函数中delete释放空间

    数据的生命周期不完全受程序或函数的生存时间控制.

    这种做法使的对内存有更大的控制权, 但是内存管理也更加复杂

    如果new出的内存不delete, 会导致给原变量分配的内存不会自动释放, 但是也不能被继续使用.

    即内存泄漏. 当应用程序的内存被耗尽, 出现内存耗尽错误, 程序崩溃,也会给同时运行在电脑上的其他软件造成伤害.

  • 相关阅读:
    软件工程个人作业(4)
    软件工程个人作业(3)
    软件工程个人作业(2)
    软件工程个人作业(1)
    构建之法
    消息分发机制,实现战场与UI通信功能
    设置父物体方法(包括层级)
    NGUI通过点击按钮来移动面板位置,实现翻页功能
    unity中调用android的剪切板
    屏蔽UI事件
  • 原文地址:https://www.cnblogs.com/derek-dhw/p/10439679.html
Copyright © 2011-2022 走看看