在免费商店分配内存

时间:2014-09-29 20:49:39

标签: c++ pointers memory

当我编写代码以在c ++中的免费存储上分配内存时,我很好奇为指定该数据的指针。例如:

因为我声明并初始化一个像这样的指针,

     unsigned short int * pPointer = new unsigned short int;
     *pPointer = value;
     delete pPointer;

是4个字节;使用new关键字在免费商店分配,我可以为该地址分配一个值。但我的问题是,为什么我需要重新建立它的类型以指定我的指针?

我想这样做:          unsigned short int * pPointer = new pPointer
易?

Javascript会使用方法

     newMethod = new Method()

访问方法中的成员数据。

但是我知道如何使用指针。

      pPointer = member data address   and   *pPointer = member data value  

每当我尝试类似的东西时,

    int * pLocal = &pPointer   

抛出错误。无法将int **转换为int * 我试图保留相同的内存空间,这就是为什么我不能将其地址存储在另一个指针中的原因,只是它的保留内存。

抱歉,如果这令人困惑但我只是想知道如何在免费商店分配内存并使用指针访问它已经有一个带有sizeof()内存的类型默认需要在new关键字之后的另一个类型声明?

1 个答案:

答案 0 :(得分:1)

  

但我的问题是,为什么我需要重新设置它的类型以指定我的指针?

当您使用new进行分配时,您需要提供该类型。这是因为编译器不知道你要分配什么,并且它需要这种类型,以便在给定某些信息的情况下为该特定类型建立正确的分配策略(即,类型,对齐等多少字节) )。

请注意,类型不会始终与指针相同。例如,如果您有基类B和派生类D,则可以为派生类实例的地址(即B* ptr = new D)分配基类指针。

  

Javascript会使用方法

newMethod = new Method()

JavaScript没有指针,new在该语言中的工作方式不同。它只是创建给定类(函数)的新实例。