【发布时间】:2019-03-20 18:07:18
【问题描述】:
我正在尝试使用new 而不是malloc 来计算此代码的精确等效项。指向浮点数组[4]的指针:
float (**f)[4] = (float(**)[4])malloc(2 * sizeof(float(*)[4]));
for (int p = 0; p < 2; p++) {
f[p] = (float(*)[4])malloc(3 * sizeof(float[4]));
}
我尝试了一堆组合,但找不到正确的语法。
float (**f)[4] = new ...
【问题讨论】:
-
首先引入 typedef 以更清楚地了解发生了什么。写的代码很恶心。
-
改用
std::vector<std::vector<std::array<float, 4>>>。 -
已经使用了
std::vector。或者,如果您必须动态分配,至少使用智能指针。对于初学者,请查找std::make_unique。 -
我对所问问题的答案很感兴趣。我知道人们应该并且永远不会使用此代码。