基本的C++内存问题

Dr *_*Deo 12 c++ opengl

我的一个朋友宣布使用新类型

typedef GLfloat vec3_t[3];
Run Code Online (Sandbox Code Playgroud)

后来用vec3_t来分配内存

vertices=new vec3_t[num_xyz* num_frames];
Run Code Online (Sandbox Code Playgroud)

他释放了记忆

delete [] vertices;
Run Code Online (Sandbox Code Playgroud)

问题:
1.由于vec3_t是GLfloat [3]的别名,是否意味着

vec3_t[num_xyz* num_frames] 
Run Code Online (Sandbox Code Playgroud)

相当于

GLfloat[3][num_xyz* num_frames];  
Run Code Online (Sandbox Code Playgroud)

2.如果上面是2维数组,那么如何从内存中正确删除?

提前致谢;
来自deo

Alo*_*lon 7

1.二维数组可以是一维数组,其中每个元素是一个数组.
使用此定义,您可以看到它 new vec3_t[num_xyz* num_frames] 等效于二维数组.

2.该阵列由num_xyz* num_frames 每个成员采取的空间sizeof (vec3_t)
new进行它分配num_xyz* num_frames堆内存中的小伙子,就这样,调用时需要这个号码的便条delete[]会知道怎样的许多块sizeof (vec3_t) 应该标志着堆免费.