【发布时间】:2012-08-14 03:21:20
【问题描述】:
我有一个指向类的指针,它有一个指向多维数组的指针,但我似乎无法在需要时将其从内存中删除或将其设置为 NULL。
#define X 10
#define Y 10
struct TestClass
{
public:
int *pArray[X][Y];
};
// different tries, none working:
delete Pointer_To_TestClass->pArray[0][0];
delete[] Pointer_To_TestClass->pArray[0][0]
// or by simply:
Pointer_To_TestClass->pArray[0][0] = NULL;
我知道数组有数据,因为我可以在屏幕上看到结果。 还要检查它是否已经为NULL,然后不要尝试删除它。
既然我想删除另一个指针中的一个指针 - 这是一种不同的特殊情况吗?就像它删除了第一个指针,而不是指针内部的指针(pArray是第二个指针,Pointer_To_Testclass是第一个指针)
更新/解释
我希望能够删除 pArray[0][0] 而 pArray[0][1] 仍然存在,如果 [0][0] 不存在它应该等于 NULL强>。主要是因为我想通过 [X][Y] 值访问这个数组以便于访问。如果 [0][0] 是一个指针,那么在删除时它应该是 NULL,所以我可以检查它是否为 NULL。
有人有什么想法吗?
【问题讨论】:
-
不过,这与它无关。它是一个多维指针数组,而不是指向多维数组的指针。
-
有些事情告诉我你需要重新考虑你的代码。一定会有更好的方法。
-
请考虑将
std::vector用于 C++ 中的数组。然后将指向锯齿状二维数组的指针声明为std::vector<std::vector<int> >*。 -
我会推荐关注the rule of zero。也就是说,“我如何删除这个东西?”的答案。取决于“我是如何分配这个东西的?”的答案,这个问题没有包含在问题中。
-
我的问题仍然是,为什么我可以创建一个指针:Object *Object[X][Y] 并在其中存储数据(使用指针,通过 Object[X][Y] = new Object( ) 但不删除数据,因为它是一个指针。)
标签: c++ class pointers multidimensional-array delete-operator