C ++中新员工* [num]的陈述是什么意思

时间:2014-06-22 11:31:31

标签: c++ arrays pointers new-operator

我在一本书中看到了这个陈述。

new employee *[num];

其中employee已被声明为struct employee 和num是一个int;

这是声明中=运算符的右侧。

那么,这个陈述是什么意思? 这本书没有对上述陈述作出任何解释。

2 个答案:

答案 0 :(得分:7)

这将分配一个内存,以便在免费商店中保存numemployee个指针。

e.g:

employee** a = new employee* [2]; // 2 pointers on the heap

堆:

address a (e.g. 0x97a0008): pointer1 to employee

address a + 1 ( 0x97a000c): pointer2 to employee

附注:您在数组上使用delete[],因此您可以使用delete[] a BUT 删除上面的内容,如果已为其分配了内存,则必须首先遍历所有条目所以必须在松开指针之前释放它。

https://stackoverflow.com/a/13477214/1141471

答案 1 :(得分:2)

认为是这样,

typedef employee* TEmployee;
TEmployee * ap = new TEmployee[10];

因此,它为大小为10的TEmployee(非员工)的动态数组分配内存。它很简单,

int * aip = new int[10];

TEmployee本身是员工的指针类型。