thread.join()与.detach()方法在资源释放方面的考量
thread join()等待线程结束,释放线程占用资源。 detach()让线程自己结束并释放占用资源。注意:不能两个函数都不调,这样会导致线程虽然结束但占用的资源不释放、系统资源耗尽的问题。
thread.join()与.detach()方法在资源释放方面的考量
thread join()等待线程结束,释放线程占用资源。 detach()让线程自己结束并释放占用资源。注意:不能两个函数都不调,这样会导致线程虽然结束但占用的资源不释放、系统资源耗尽的问题。
c++11右值引用、std::move移动语义、std::forward完美转发的一些总结
std::move 实际上并不能移动任何东西,它唯一的功能是将一个左值强制转换为右值引用,继而用于移动语义。从实现上讲,它基本等同于一个类型转换:static_cast<T&&>(lvalue);特别
std::stringstream ss; 直接使用ss.str().c_str() 字符串指针可能导致崩溃
std::stringstream ss;const char* ch = ss str() c_str();call_func(ch);这种写法在系统内存不足时,ss会立马释放内存,字符串指针ch可能会非法访问导致崩溃。代码最好的是
Google C++编码规范(Google C++ Style Guide)
Google C++ Style Guide是一份不错的C++编码指南,我制作了一张比较全面的说明图,可以在短时间内快速掌握规范的重点内容。不过规范毕竟是人定的,记得活学活用。
C++中全局静态变量初始化顺序随机,是线程安全的;局部静态变量在函数调用时才初始化,非线程安全。1、C++中全局静态变量初始化顺序随机,是线程安全的,由C++标准提出,编译器实
std::mutex 加锁抛 _DEVICE_OR_RESOURCE_BUSY 异常
最近遇到一个崩溃,在 std::lock_guard<std::mutex> lock(mutex_); 的地方,抛出了_DEVICE_OR_RESOURCE_BUSY 的异常。最终查出原因是:同一个线程对同一个mutex二次加锁导致的
c++11 智能指针回调经典测试案例,当回调函数需要使用原对象指针时不确定原对象是否已经释放,这时必须使用智能指针了,代码如下: includ
在windows与linux系统通过socket的传输数据里,如果传输中文字符,因为windows和linux使用的编码不同,所以需要将windows下的中文编码转换为
C++ 智能指针shared_ptr,weak_ptr,shared_from_this实践
new XXX(shared_from_this()) 如果用强指针去接,则增加引用计数;弱引用去接,不增加引用计数。auto去接等同强指针。weak_ptr 传给thread、timer回调,不能使用expired()判断
Google breakpad stackwalker无法加载符号
Google breakpad安装好以后,按要求生成 sym,但是最终minidump_stackwalk打印出来的堆栈还是提示找不到符号。这是因为它要求符号文件有一
两句代码就OKHBRUSH newBr = CreateSolidBrush(RGB(212,122,212));SetClassLong(m_Toolbar.m_hWnd, GCL_HBRBACKGROUND, (long)newBr);亲测有效。
当编译出现如下错误时:1>c: program files (x86) microsoft sdks windows v7.0a include rpcndr.h(162): error C2632: char后面的in...
1 volatile关键字:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。例如:假设编译
pWnd->MoveWindow( CRect(0,0,100,100) ); 在窗口左上角显示一个宽100、高100的编辑控件SetWindowPos()函数使用更灵活,多用于只修改...
除了合理的划分模块,减少link的时间外,充分利用多核编译也很重要。VS2010 2012都可以用多核编译,需要同时设置如下两个参数:Enable Min...
用MFC创建的基于对话框的应用程序,启动时父对话框在任务栏上会自动创建图标,但弹出的子对话框却没有,这样隐藏了父对话框以后,要查看程...
1.CTime类获取当前时间CTime curTime = CTime::GetCurrentTime();CString strCurTime;strCurTime.Format(_T("d d d d:d:d"), curTime...
MFC 时间控件CDataTimeCtrl使用(获取日期、时间字符串等)
设置显示格式: 只显示小时( (CDateTimeCtrl*)GetDlgItem(IDC_StartHour) )->SetFormat(_T("HH"));获取控件的值:CTime m_date;( (CDa...
自绘控件中的代码:ON_CONTROL_REFLECT(BN_CLICKED, OnClicked)void CMyCheckbox::OnClicked() { m_bCheck = !m_bCheck; ...