指针数组的大小是已知的。如何为T* var[1]
分配内存?
我试过了:
T* var[1];
var = new T*[count];
for(int i = 0; i < count; ++i)
var[i] = new T;
但编译器声明:“无法从T **转换为T * [1]”
答案 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;
答案 1 :(得分:0)
T** var = new T*[count];
...
delete[] var;
当前类型(T *)[1]相当于T **,但如果相应维度中有多个元素,则聪明的编译器可能会发出警告。
如果它是结构的一个成员,那么只有一个指针的数组,也许是一些on维三维数组:
var[0][i]