myTransformationMatrixes

myTransformationMatrixes

在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;


您的两个示例都调用了未定义的行为,很幸运,第一个示例没有造成明显的危害。

关于c++ - 无法释放给定Maya类型的内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35080660/

10-11 18:28