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