如何从内存中删除指针并稍后在C ++

时间:2015-06-30 12:19:00

标签: c++ oop pointers

我使用QT Creator在C ++中创建了一个对象数组,它设置了一个简单益智游戏的网格。当一个游戏会话结束,我想开始一个新的游戏,我删除了运算符删除数组的内存使用情况,所以我防止任何内存泄漏。但是,由于我的阵列是全局的,并且我在每次新的游戏会话中动态地重新调整它都会遇到麻烦,这会导致阵列不再可用吗?我需要重新开始吗?

2 个答案:

答案 0 :(得分:5)

是。使用delete的全部意义在于告诉计算机,“嘿,我以前使用过这种记忆,但我不再需要它了。永远。随便做任何你想做的事。”

然后,计算机可以根据其认为合适的目的回收该内存。

换句话说,如果你需要再次使用内存, delete它!

答案 1 :(得分:2)

我猜你的“全局”是指向你初始化的数组的指针......

Data* p;

您稍后会初始化:

p = new Data[n];
p[0] = get_first_value();
...

比赛结束后你可以删除它:

delete[] p;

当你准备开始一个新游戏时,你可以再次使用它 - 相同的声明 - 通过分配它来解决新分配的内存:

p = new Data[n];
p[0] = get_first_value();
...

如果由于某种原因您决定需要更多或更少的数据,每个游戏的n值不必相同。