写一段有内存泄漏的示例代码。

东白随记
0 评论
/ /
0 阅读
/
923 字
17 2024-09

以下是一个简单的C++内存泄漏示例代码:

```cpp

#include

#include

void createLeak() {

std::vector *myVector = new std::vector; // 动态分配一个vector的指针,但未初始化

// ... 代码中其他操作 ...

// 注意:这里没有释放myVector指向的内存,也没有将其置为nullptr,导致内存泄漏

}

int main() {

while (true) { // 为了持续创建内存泄漏,我们使用一个无限循环

createLeak();

std::cout << "Memory Leak Created!" << std::endl;

std::cin.get(); // 暂停以观察内存泄漏

}

return 0;

}

```

这段代码中,`createLeak` 函数动态分配了一个 `std::vector` 的指针,但并没有初始化或释放它。在 `main` 函数中,我们持续调用 `createLeak` 函数来创建内存泄漏。由于没有释放分配的内存,这些内存会一直保留在内存中,直到程序结束。这会导致内存泄漏,因为这些内存不会被操作系统自动回收。

这只是一个简单的示例,实际中的内存泄漏可能更加复杂和难以察觉。为了避免内存泄漏,应该始终确保正确地管理动态分配的内存(例如使用 `new` 分配的内存应该使用 `delete` 来释放)。此外,使用智能指针(如 `std::unique_ptr` 和 `std::shared_ptr`)也可以帮助自动管理内存。