Ste*_*ano 1 c++ arrays pointers memory-leaks
我正在使用上面的代码动态分配一个数组,在函数内部做一些工作,返回一个数组元素并释放函数外部的内存.但是当我尝试释放数组时,它不会释放内存,而且我有内存泄漏.指向myArray变量的调试器向我显示错误CXX0030.为什么?
struct MYSTRUCT
{
char *myvariable1;
int myvariable2;
char *myvariable2;
....
};
void MyClass::MyFunction1()
{
MYSTRUCT *myArray= NULL;
MYSTRUCT *myElement = this->MyFunction2(myArray);
...
delete [] myArray;
}
MYSTRUCT* MyClass::MyFunction2(MYSTRUCT *array)
{
array = (MYSTRUCT*)operator new(bytesLength);
...
return array[X];
}
Run Code Online (Sandbox Code Playgroud)
你应该使用的唯一时间delete[]是你已经分配new[],但那不是你正在做的.您正在使用operator new,这不是您应该用于通用数组分配的.请new[]改用.或者使用矢量.
此外,虽然您传递myArray给MyFunction2as array然后array在函数内部分配一个新值,但这不会更改myArray调用者的值.该变量保留其原始的空值,因此您的delete[]调用不执行任何操作.您可以更改array为通过引用而不是按值传递,因此对它的更改将反映在调用方的实际参数中.