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