C++
mmk27
这个作者很懒,什么都没留下…
展开
-
LRU算法
#include <iostream> #include <list> #include <map> using namespace std; class LRU { struct node { int key, val; node(int k_ = 0, int v_ = 0) { key = k_; val = v_; } }; public: int cap; // 大小 map<int, list<node>.原创 2020-09-16 10:24:09 · 220 阅读 · 0 评论 -
C/C++内存泄漏及检测
“该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏,系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一,因为除非用完内存或调用malloc失败,否则都不会导致任何问题。实际上,使用C/C++这类没有垃圾回收机制的语言时,你很多时间都花在处理如何正确释放内存上。如果程序运行时间足够长,如后台进程运行在服务器上,只要服务器不宕机就一直运行,一个小小的失误也会对程序造成重大的影响,如造成某些关键服务失败。 对于内存泄漏,本人深有体会!实习的时转载 2020-09-02 19:48:56 · 269 阅读 · 0 评论 -
c++11多线程学习
一.join和detach C++中的thread对象通常来说表达了执行的线程(thread of execution),这是一个操作系统或者平台的概念。 当thread::join()函数被调用后,调用它的线程会被block,直到线程的执行被完成。基本上,这是一种可以用来知道一个线程已结束的机制。当thread::join()返回时,操作系统的执行的线程已经完成,C++线程对象可以被销毁。 当thread::detach()函数被调用后,执行的线程从线程对象中被分离,已不再被一个线程对象所表达--这原创 2020-08-23 23:01:58 · 275 阅读 · 0 评论 -
创建线程的几种方式
class A { int x; public: void f(int x, char c) { }; int operator()(int N) { return 0; } }; void foo(int x){} int main() { A a; thread t1(a, 6); // 传递a的拷贝给子线程 thread t2(ref(a), 6); //传递a的引用给子线程 thread t3(move(a), 6); //a在主线程中将不再有效 thread t4(.原创 2020-08-23 19:52:53 · 200 阅读 · 0 评论