有或没有内存泄漏的线程

Thread with and without a memory leak

本文关键字:线程 泄漏 内存      更新时间:2023-10-16

我被困在一个c++赋值,我应该做一个简单的线程和另一个线程,具有相同的逻辑,但也有内存泄漏。

这应该只是一个简单的线程示例,甚至本身没有做任何有用的事情。所以我想我的问题是,什么是最简单的线程,可以在c++中,如果我已经正确地理解,使它泄漏内存,我应该做一个变量,那永远不会被删除?此外,这种"泄漏"是否应该置于循环中或以其他方式重复……因为对我来说,只留下一个未删除的变量似乎不像是一个大泄漏。

这对于泄漏来说已经足够了:

new char;

如果你想要更多,你可以把它放在一个循环中,但是要小心-

while( true ) {
    new char;
}

使大多数系统很快停止—它们开始交换并且几乎无法使用。在我看来,你应该坚持泄漏几个对象,除非你有其他特定的需求。

你总是可以分配一个大的对象(比如一个大的缓冲区)而不释放它;这样一次分配就会造成严重的内存泄漏。

同样,如果你有一个线程被设计成某种经常被调用的工作线程,并且在那里有一个小的内存泄漏,那么在你的程序运行时,你很容易遇到内存问题,因为"千次切割死亡"类型的泄漏。

有一个Boost Thread库,这可能是c++中线程最简单的选择。是的,内存泄漏只是一个未删除的变量。如果您不希望出现单变量内存泄漏,只需分配一个您认为必要的任意大小的数组。new char[x],其中x是您希望泄漏的内存字节数