我的一个朋友宣布使用新类型
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
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) 应该标志着堆免费.