以下代码存在什么问题,请指出。 queue<int*> testQueue; for (int i=0; i< 10000000; i++) { int* p = new int(i); testQueue.push(p); } for (int i=0; i < 10000000; i++) { int* p = testQueue.front(); testQueue.pop();//删除 queue 中的第一个元素。 if (p) { delete p; p = NULL; } }
时间: 2024-04-26 13:26:34 浏览: 103
struct_queue.zip_C++ queue<struct>_queue<struct_queue的c++实现
这段代码的问题是:在使用队列存储指针时,没有进行指针的释放操作。虽然在后面的循环中使用了 delete 操作释放了指针,但是由于前面的循环中将指针存储在了队列中,如果在队列中存储的指针没有被释放,就会发生内存泄漏。因此,需要在循环结束后,对队列中存储的指针进行释放,可以在最后添加如下代码:
while (!testQueue.empty()) {
int* p = testQueue.front();
testQueue.pop();
delete p;
p = NULL;
}
阅读全文