我想在类中使用一个指针数组(非常大):
char* myClass::_myArray[1200000]; // 1.2 million elements
如果我在我的构造函数中新建它:
myClass::myClass()
{
for (int n = 0; n < 1200000; n++)
{
_myArray[n] = new char[32];
}
}
然后在我的析构函数中,我处理它:
myClass::~myClass()
{
for (int n = 0; n < 1200000; n++)
{
if (NULL != _myArray[n])
{
delete[] _myArray[n]; // exception throws here
_myArray[n] = NULL;
}
}
}
总是抛异常如下图:
我不知道为什么。我想知道是否要为类对象预分配一个缓冲区直到它退出,我应该怎么做?这个缓冲区应该像一个全局变量一样工作,可以在调用类中的函数/方法时随时使用。
非常感谢。感谢任何意见和教育。
附加信息:
我将数组大小设置为 1000 (char* myClass::_myArray[1000];
),它工作正常。当我将它设置为 5000 时,它会在应用程序退出后抛出这样的异常。当为120万时,应用启动时抛出异常。
delete[] _myArray[n]
是异常发生的地方,但它随机发生在 n
数。
最佳答案
if (NULL != _myArray[n])
{
delete[] _myArray[n];
_myArray = NULL;
}
您不想在循环中将 _myArray
设置为 NULL 。事实上,您永远不想将_myArray
设置为NULL。如果 _myArray
实际上是按照您在此处显示的方式定义的(而不是 char** myClass::_myArray = new char*[1200000];
),则应将其设置为 NULL编译器错误。
关于c++ - 在类中使用指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25796490/