C++ – vector存储动态指针时正确释放内存
1 代码示例 #ifdef _DEBUG #define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__) #else #define DEBUG_CLIENTBLOCK #endif #define _CRTDBG_MAP_ALLO…
- C++
- 2020-05-06
C++ – 得到字符串中某个字符串出现的个数
1 代码示例 #include <iostream> using namespace std; int GetRepeatCountInStr(const std::string & strStream, const std::string& str) { int…
- C++
- 2020-05-06
C++11 – 基于无锁队列的单生产者单消费者模型
1 单生产者单消费者无锁队列 Github项目地址:https://github.com/cameron314/readerwriterqueue 1.1 成员函数说明 try_enqueue:如果队列中有空间,则使元素的副本入队。如果元素已入队,则返回true,否则返回false。不分配内存。 e…
- C++
- 2020-04-22
C++11/std::shared_ptr – 循环引用问题
在C++11智能指针的使用过程中,一个很大的陷阱就是陷入了循环引用问题,这个问题类似于大型项目中两个头文件互相包含的问题,而在C++11中如果因为使用智能指针而引发了循环引用问题,那么其结果会导致智能指针无法释放,导致动态内存泄漏。 1 循环引用 下面是一个典型的循环引用示例: class B; c…
- C++
- 2020-04-02
C++11/std::atomic – 原子变量(不加锁实现线程互斥)
1 原子操作 原子操作:一个独立不可分割的操作。多线程编程需要保证线程安全,而线程安全一个很重要的特性就是原子性,即在同一时刻只有一个线程对原子进行操作,保证数据访问的互斥性。 2 C++11原子变量 C++11提供了原子类型std::atomic,可以使用任意的类型作为模板参数。在多线程中如果使用…
- C++
- 2020-04-02
C++11/std::condition_variable – 生产者消费者模型
代码示例: #include <iostream> #include <thread> #include <chrono> #include <mutex> #include <deque> #include <condition_v…
- C++
- 2020-04-01
C++11/std::thread – 线程的基本用法
1 获取CPU核心数量 使用std::thread::hardware_concurrency()获取当前CPU核心数量。 代码示例: #include <iostream> #include <thread> int main() { std::cout << …
- C++
- 2020-04-01
C++11/std::thread – 线程管理join/detach
1 join方法 代码示例: #include <iostream> #include <thread> void HelloWorld() { std::cout << "hello world" << std::endl; } int main()…
- C++
- 2020-04-01
C++11/std::thread – 可作为线程函数的几种方式总结
1 使用普通函数作为线程函数 代码示例: #include <iostream> #include <thread> void ThreadFunction() { std::cout<< "线程函数被启动" << std::endl; } int m…
- C++
- 2020-04-01
C++ – std::map – 存储动态指针时正确释放内存
C++ std::map 存储动态指针时正确释放内存 如何在std::map存储的指针时正确的释放指针,防止内存泄漏,示例代码如下 #ifdef _DEBUG #define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__) #els…
- C++
- 2020-03-03
C++ – int转string方法总结
1 std::to_string(最推荐) 可靠、可移植性高 示例代码: #include <string> using namespace std; int main(){ int n=100; string str=to_string(n); return 0; } 2 itoa函数…
- C++
- 2020-02-27
C++ – 使用C++标准库过滤Windows文件名中的非法字符
1 使用C++标准库过滤Windows文件名中的非法字符 在windows系统上有一些字符识别是不能存在于文件名之中的,不然会导致创建文件失败,所以写了一个过滤函数过滤文件名中的非法字符: 代码示例: template <typename T> bool MatchInvalidChar…
- C++
- 2020-01-09