C/C++
文章平均质量分 91
胡LiuJia
这个作者很懒,什么都没留下…
展开
-
C/C++中的断言(assert与static_assert)
你也可以通过我的独立博客 —— www.huliujia.com 获取本篇文章assert简介assert被C/C++用来判断某些条件是否成立,比如判断指针类型的大小sizeof(void*)是否大于8,或者判断malloc返回的指针是否为null。assert的函数申明如下:void assert( int expression );如果expression为0,即false,assert就会把函数名,源代码文件名、当前行号发送给标准错误stderr,然后调用abort()终止执行。什么.原创 2021-04-06 09:27:17 · 3835 阅读 · 0 评论 -
内存乱序与C++内存模型详解
你也可以通过我的独立博客 —— www.huliujia.com 获取本篇文章内存乱序内存乱序指的是内存操作出现乱序,CPU缓存、编译器优化、处理器指令优化等都会改变内存顺序,造成内存乱序。学习内存顺序容易陷入了一个误区,因为内存顺序是和CPU架构、编译器息息相关的,想要去深入理解CPU缓存怎么导致内存乱序的,编译器优化和处理器指令又是怎么导致内存乱序的,很容易陷入一个又一个填不了的坑。要去了解各种编译器优化技术、了解各种CPU的指令集,甚至连ARM的v7和v8区别都去看了一下。鲁迅说过,学海无.原创 2021-04-06 09:25:40 · 932 阅读 · 1 评论 -
聊一聊原子操作
你也可以通过我的独立博客 —— www.huliujia.com 获取本篇文章先举个栗子下面的C++代码编译执行后,v的输出是多少呢?每个线程都执行了10000次v++,总共2个线程,那么v的最终结果应该是20000,结果是这样吗?#include <iostream> // std::cout#include <thread> // std::threadint v = 0;void plus(){ for(int i=0; i.原创 2021-04-06 09:23:46 · 554 阅读 · 0 评论