我被指派在MFC中处理一些遗留的C++代码.我在这个地方找到的一件事是分配如下:
struct Point
{
float x,y,z;
};
...
void someFunc( void )
{
int numPoints = ...;
Point* pArray = (Point*)new BYTE[ numPoints * sizeof(Point) ];
...
//do some stuff with points
...
delete [] pArray;
}
Run Code Online (Sandbox Code Playgroud)
我意识到这个代码在如此多的层面上是非常错误的(C风格演员,使用new类似malloc,混乱等).我也意识到如果Point已经定义了一个构造函数,那么它就不会被调用,delete []如果定义了一个析构函数,就会发生奇怪的事情.
问题: 我正在修理这些事件的过程,无论它们出现在哪里.但是,我以前从未见过这样的东西,它让我感到疑惑.此代码是否有可能导致内存泄漏/损坏,因为它当前(没有构造函数/析构函数,但指针类型不匹配)或只要数组只包含结构/基元类型,它是否安全?