![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C与C++程序设计
文章平均质量分 69
收录C/C++程序设计基础概念、疑难点分析、典型例题源码、经典算法分析等
小麦China
来我公众号一起学习吧:xiaomaiChina
展开
-
C++11的std::shared_ptr 是否是线程安全
结论:指针和引用计数是线程安全的,但指针所指对象中的操作就需要自己做控制,并不是线程安全的。std::shared_ptr大概总结有以下几点:(1) 智能指针主要的用途就是方便资源的管理,自动释放没有指针引用的资源。(2) 使用引用计数来标识是否有多余指针指向该资源。(注意,shart_ptr本身指针会占1个引用)(3) 在赋值操作中, 原来资源的引用计数会减一,新指向的资源引用计数会加一。(4)引用计数加一/减一操作是原子性的,所以线程安全的。(5) make_shared要优于.原创 2021-07-19 00:25:29 · 2587 阅读 · 1 评论 -
内存对齐及其类大小
内存对齐C与C++ 区别 :C:空结构体 ,大小不确定,报错;C++:空结构体,大小1个字节结构体的大小不是结构体元素单纯相加就行的,因为我们主流的计算机使用的都是32bit字长的CPU,对这类型的CPU取4个字节的数要比取一个字节要高效,也更方便。所以在结构体中每个成员的首地址都是4的整数倍的话,取数据元素时就会相对更高效,这就是内存对齐的由来。每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。可以通过预编译命令#pragma pack(n),n=1,2,4,8,16.原创 2021-07-18 23:43:07 · 193 阅读 · 0 评论 -
常见基本数据类型所占字节数
指针大小与系统编译器位数相同,16位编译器(2字节)、32位编译器(4字节)、64位编译器(8字节)编码与中文:Unicode/GBK: 中文2字节UTF-8: 中文通常3字节,在拓展B区之后的是4字节综上,中文字符在编码中占用的字节数一般是2-4个字节。int,longint,shortint的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的): sizeof(shortint)<=sizeof(int) sizeof(int)<=size...原创 2021-07-18 23:26:17 · 10941 阅读 · 0 评论 -
虚函数表存储的位置(解析C++内存分配及其编译分段)
先上结论:C++虚函数表保存在.rdata只读数据段。编译时期由编译器确定虚函数表。虚函数表属于类,类的所有对象共享这个类的虚函数表。c/c++的内存分配栈(stack):又称堆栈,栈是由编译器自动分配释放,存放函数的参数值,局部变量的值等(但不包括static声明的变量,static意味着在数据段中存放变量)。除此之外,在函数被调用时,栈用来传递参数和返回值。由于栈的先进后出的特点,所以栈特别方便用来保存/恢复调用数据。其操作方式类似于数据结构中的栈。 堆(heap):堆是用于存放进程运行中原创 2021-07-18 23:15:00 · 5347 阅读 · 0 评论 -
C++11强制类型转换
向下转换需要向上转换不需要原创 2021-06-30 17:25:37 · 124 阅读 · 0 评论 -
C程序设计 07-09 数组和指针(二)
折半查找法(二分查找)折半搜索(half-interval search),也称二分搜索(英语:binary search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。原创 2021-05-06 13:12:02 · 92 阅读 · 0 评论 -
C程序设计 04-06 数组和指针
目录break与continueC数组初始化数组用 for 循环初始化数组数组在内存中如何存放?sizeof()数组名能否作为左值或者右值?数组内部详解指针常量指针指向常量的指针访问数组中的元素断言(assert)的使用字符数组'\0' '0' "0" 0的区别sizeof与strlen的区别与联系字符串与字符数组strcpy()字符串拷贝函数break与continuebreak : 结束所有循环conti...原创 2021-05-06 12:28:41 · 103 阅读 · 0 评论 -
C语言基础
C语言基础目录数制基本数据类型关于char的死循环第一个C语言程序scanf 函数的不安全性分析变量及类型转换浮点数(关于float型变量在内存中的存储)位运算符数制对于一个 10 进制整型 int 数字,12 转化为二进制数字 0000 1100,八进制 0000 0014,十六进制:0x0C求反码补码,正数的补码反码都是一样的,区别在与负数的补码,对一个负数求补码至于要取绝对值然后取反加 1 就可。例:-12 的补码是:1111 0100ASCII原创 2021-05-06 10:12:54 · 352 阅读 · 0 评论 -
重拾C++:Day1基础篇
C++运算符优先级https://blog.csdn.net/gatieme/article/details/43736507原创 2020-09-03 17:57:13 · 94 阅读 · 0 评论