无法释放给定 Maya 类型的内存

Unable to free memory for a given Maya type

本文关键字:类型 内存 Maya 释放      更新时间:2023-10-16

在C++中,我可以保留一些内存,然后删除此内存,例如:

float *myFloat;
myFloat = new float[10];
delete myFloat;  --> Works fine

但是,如果该类型不是float *而是MTransformationMatrix *(Maya 类型),则我无法删除:

MTransformationMatrix *myTransformationMatrixes;
myTransformationMatrixes = new MTransformationMatrix[10];
delete myTransformationMatrixes;   --> Crash
对于

特殊类型,我需要做些什么才能释放内存吗?

这两个

分配的对象都是数组,您应该使用delete[]语法删除它们:

float *myFloat = new float[10];
delete[] myFloat;
MTransformationMatrix *myTransformationMatrixes;
myTransformationMatrixes = new MTransformationMatrix[10];
delete[] myTransformationMatrixes;

你的两个例子都调用了未定义的行为,你只是幸运,第一个没有造成明显的伤害。

您应该使用运算符删除数组delete[]。当只分配了一个对象而不是数组时,请使用delete

当您使用错误的时,它会导致未定义的行为。