c ++如何为T * var [1]这样的数组分配内存

时间:2015-08-03 11:50:09

标签: c++ arrays

指针数组的大小是已知的。如何为T* var[1]分配内存?

我试过了:

T* var[1];
var = new T*[count];
for(int i = 0; i < count; ++i) 
  var[i] = new T;

但编译器声明:“无法从T **转换为T * [1]”

2 个答案:

答案 0 :(得分:2)

假设var被声明为T**,您的代码为works perfectly fine。我强烈建议您使用std::vector作为:

std::vector<T> var(count);

虽然。

显然声明的格式为:

T* var[1];

这是一个静态分配的指针数组。您将不得不使用:

var[0] = new T;

填补它。

例如,您可以:

constexpr int count = 3;
T* var[count];
for (int i = 0; i < count; ++i)
    var[i] = new T;

Live demo

答案 1 :(得分:0)

T** var = new T*[count];
...
delete[] var;

当前类型(T *)[1]相当于T **,但如果相应维度中有多个元素,则聪明的编译器可能会发出警告。

如果它是结构的一个成员,那么只有一个指针的数组,也许是一些on维三维数组:

var[0][i]