小吴同学
善良比聪明更重要
C/C++整型变量赋值操作是原子性的吗? C/C++整型变量赋值操作是原子性的吗?
那么为什么整型变量的操作不是原子性的呢?常见的整型变量操作有如下几种情况:给整型变量赋值一个确定的值,如 int a = 1;这条指令操作一般是原子的,因为对应着一条计算机指令,cpu将立即数1搬运到变量a的内存地址中即可,汇编指令如下:
2024-10-13
so出现undefined symbol------ldd, nm, c++filt so出现undefined symbol------ldd, nm, c++filt
最近发版本,灰度发布的时候,发现进程没起来,回包自然是异常的。立即进行版本回退,发现OK.哪里出问题了呢? 直接ldd -r libtest.so一下,就知道了,原来是缺符号。看看简化后的示例代码: #include <iostrea
2024-10-08
Lambda 表达式捕获列表 Lambda 表达式捕获列表
捕获值列表,是允许我们在Lambda表达式的函数体中直接使用这些值,捕获值列表能捕获的值是所有在此作用域可以访问的值,包括这个作用域里面的临时变量,类的可访问成员,全局变量。捕获值的方式分两种,一种是按值捕获,一种是按引用捕获。顾名思义,按
2024-10-08
内存分配malloc 内存分配malloc
下面的代码片段输出是什么?为什么? char *ptr; if((ptr = (char *)malloc(0)) == NULL) puts("Got a null pointer"); else pu
2024-10-08
C++成员修饰const和mutable C++成员修饰const和mutable
const:常量,不变的mutable:易变的从意思上理解,可见const和mutable是一对反义词,它们都是C++的关键字。const成员函数不能修改调用它的对象。类的成员函数可以被声明为const,这将使得函数的隐式参数this将被作
2024-09-28
使用++i还是i++ 使用++i还是i++
我们经常使用for循环来遍历东西,循环变量可以前自增也可以后自增,发现对遍历结果没啥影响,但是该如何选择呢?我们应该尽量使用前自增运算符而不是后自增运算符,即用 ++Iter代替Iter++。前缀和后缀形式之间的区别是众所周知的。我希望它们
2024-09-25
C++面试题 C++面试题
1.char c = '\72'; 中的\72代表一个字符,72是八进制数,代表ASCII码字符:。2.10*a++中a先进行乘法运算再自增。3.const和static的作用static关键字:1)函数体内static变量
2024-09-23
C++细说sizeof C++细说sizeof
摘要:sizeof的作用非常简单:求对象或者类型的大小。然而sizeof又非常复杂,它涉及到很多特殊情况,总结出了sizeof的9个特性:(1)sizeof不能求得void类型的长度;(2)sizeof能求得void类型的指针的长度;(3)
2024-09-08
C++中new与malloc区别 C++中new与malloc区别
申请的内存所在位置new操作符从自由存储区上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操
2024-09-08
C++ 流缓冲区 C++ 流缓冲区
C++ 的 I/O 是通过标准库中输入输出流来实现的。标准库在 iostream头文件当中,预定义了六个流对象,他们是: • istream <- std::cin/std::wcin,对应标准输入的输入流; • ostream &l
2024-09-04
C++命令行参数 C++命令行参数
前言我们在Linux用到的命令常常支持很多参数,那么如何写一个程序,也像Linux命令一样支持很多参数呢?有什么什么优雅的处理方法? 命令行参数在介绍如何处理命令行参数之前,简单介绍一下命令行参数,已经了解的朋友可以跳过此小节。我们用一段代
2024-09-03
std::ref std::ref
C++本身有引用&,为什么C++11又引入了std::ref?主要是考虑函数式编程如std::bind在使用时,是对参数直接拷贝,而不是引用。如下例子: void f(int& n1, int& n2, const
2024-09-03
2 / 5