zoukankan      html  css  js  c++  java
  • 动态内存分分配

    大多数程序在运行时,计算机中会有部分的内存未分配,这些内存叫堆或叫自由存储器。我们可以用new操作符在堆中为特定类型的变量分配空间,返回值是分配给此变量的内存地址。释放分配的空间是用delete操作符。

    在内存中操作指针比操作变量本身速度更快更有效,特别是对于数组。

    一 给简单变量分配动态内存

    如我们要在内存中给一double型变量分配空间,我们可以先声明一个double型指针,然后再给此对象赋值:

      double* pdata=NULL;

          pdata=new double;

          *pdata=3.665;(等同于pdata=new doulbe(3.665);)

        delete pdata;

     pdata=0;(或pdata=NULL).

        pdata=new double(3.665)为初始值,即在分配内存空间时指定的值,而*pdata=3.665是给对象赋值。

     delete pdata;是销毁用new 分配的空间。

      在delete指针后,最好带上pdata=0.表示此指针已不指向任何值。

    二 给数组分配动态内存

        为数组分配动态内存非常简单,如为一数组分配一个指针pstring.

        char* pstring=new char[20];

        即数组为20个元素的char类型数组,此时pstring指向第一个元素。

      *(pstring+1)为第二个元素的值.

       数组销毁时用 delete [] pstring. 中括号表示删除的变量为数组变量。变量删除后为防止原变量指针被其它程序占用,把变量指针设置为0即可,即pstring=0;

     以下为操作整形类型的例子:

       

    #include <iostream>
    using namespace std;

    void main()
    {
    int* p=new int[3];  //分配内存空间
    *p=11; //给相关元素赋值
    *(p+1)=50;
    *(p+2)=33;

    for(int i=0;i<3;i++)
    printf(
    "元素[%d]的地址 %x, 内容: %d\n",i,p+i,*(p+i));
    delete [] p; //销毁分配的数组空间
    p
    =0;       //清查指针,使其不指向任何数据

    }

    显示结果为:

        数组的空间是连续分配的,int类型的大小为4个字节,你会发现每个指针位置相差一个整型即4个字节。

    如果是多维数组,和一维数组一样操作。

      如 int* p=new int[10][15][20];

     销毁时也是用delete []  p即可。

  • 相关阅读:
    PHP常量
    jquery中的几种常用总结
    jquery中的ajax
    常用的jquery一些总结
    js验证手机号邮箱号用户名
    PHP优化杂烩
    一个php开发的用于路由器的小功能
    HTML <form>
    window.open
    try&catch
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/2140717.html
Copyright © 2011-2022 走看看