![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程语言
ArionHill
这个作者很懒,什么都没留下…
展开
-
注意:需要留意的函数
snprintfint snprintf ( char * s, size_t n, const char * format, ... );该函数的返回值仅可用于判断函数是否执行成功,其大小不能代表s的大小可以分情况讨论s < format的长度时n <= s的长度时:format能够截断至n-1的长度进行拷贝到s并添加结束符\0; 返回值却为format的长度。strlen(s)为n-1;sizeof(s)为s的本身字节数(sizeof所有情况都一样)n > s的长度时:原创 2021-05-20 17:08:32 · 87 阅读 · 0 评论 -
c++中的多线程锁
std::mutex my_mutex;my_mutex.lock();my_mutex.unlock();std::mutex my_mutex;std::lock_guard<std::mutex> mtx_guard(my_mutex);std::mutex my_mutex;my_mutex.lock();// std::adopt_lock不会重复加锁my_mutex,my_mutex依旧会在mtx_guard析构时解锁std::lock_guard<std:原创 2021-05-05 11:08:12 · 316 阅读 · 0 评论 -
C++内存分段的叫法
最细分:代码段(.text)、只读数据段(.rodata)、读写数据段(.rwdata)、未初始化数据段(.bss)、栈区、共享内存区、堆区其它一些叫法:静态区(代码段、只读数据段、读写数据段、未初始化数据段)和动态区(栈区、堆区)只读代码段(代码段、只读数据段)data段(只读数据段和读写数据段)全局/静态区(data段和bss段)...原创 2019-09-07 15:19:34 · 604 阅读 · 0 评论 -
构造函数,析构函数,运行时多态
#include <iostream>using namespace std;class A {public: A() { f(); // 构造函数中无运行时多态,输出A::f() } virtual void f() { cout << "A::f()" << endl; } ...原创 2019-08-07 08:09:27 · 194 阅读 · 0 评论 -
列表初始化(initialization list)与赋值(assignment)
哪些情况只能用 initialization list,而不能用 assignmentconst 和 reference类型成员变量,由于只能被初始化而不能做赋值操作,因此只能用初始化列表类的构造函数需要调用基类的构造函数时class Base {private: int a;public: Base(){} Base(int i): a(i){} void print...原创 2019-07-27 08:47:16 · 1152 阅读 · 0 评论 -
c中几个函数的实现 strcpy、memcpy、memmove、memset
函数原型:char* strcpy(char *dst, const char *src);char* memcpy(void *dst, const void *src, const size_t len);char* memmove(void *dst, const void *src, const size_t len);char* memset(void *dst, const i...原创 2019-08-05 10:42:30 · 146 阅读 · 0 评论 -
C++中的特殊成员函数——拷贝、移动、赋值、销毁
class Foo { Foo(); // 默认构造函数 Foo(const Foo); // 拷贝构造函数 Foo& operator=(const Foo&); // 赋值运算符};拷贝构造函数如果没有自己定义,编译器会自行定义拷贝初始化string dots(10, ','); // 直接初始化string s(dots); ...原创 2019-08-04 09:29:55 · 403 阅读 · 0 评论 -
new,delete 操作符
new operator = operator new + 构造函数delete operator = 析构函数 + operator deletenew operator是由语言内建的,如sizeof一样,不能被改变意义,总是做相同的事。它的动作分为两方面:分配足够的内存,用来放置某类型的对象。调用一个constructor,为分配的内存中的对象设定初值。这两件事是无法改变的st...原创 2019-07-29 16:23:12 · 156 阅读 · 0 评论 -
C++多态
运行期多态编译期多态虚函数表的位置:类中的函数和普通函数一样存储在代码段(.text)。虚函数应该存储在代码段。虚函数表是构造函数执行时创建的,应该放在只读数据段(.rodata)。...原创 2019-07-19 08:58:32 · 156 阅读 · 0 评论 -
empty class对象空间开销--空白基类优化
#include <iostream>class Empty{};class Nonempty{ int i;};class Ce{ int x; Empty e;};class De1: public Empty{ int x;};class De2: private Empty{ int x;};class Cne...原创 2019-07-16 15:04:08 · 165 阅读 · 0 评论 -
C++内存管理与Python垃圾回收机制
C++的内存管理方式STL的allocator,最新版本默认使用的分配器C++的内存管理方式:在c++中内存主要分为5个存储区:栈(Stack):局部变量,函数参数等存储在该区,由编译器自动分配和释放.栈属于计算机系统的数据结构,进栈出栈有相应的计算机指令支持,而且分配专门的寄存器存储栈的地址,效率分高,内存空间是连续的,但栈的内存空间有限。堆(Heap):需要程序员手动分配和释...转载 2019-05-30 16:11:10 · 594 阅读 · 0 评论 -
Python垃圾回收机制
Garbage Collection(GC)Python 主要采用引用计数的GC机制,为解决循环引用问题,引入标记-清除和分代回收引用计数优缺点优点简单实时性:一旦没了引用内存就直接释放了。处理回收的时间分摊到了平时。缺点维护引用计数消耗资源循环引用...原创 2019-04-23 14:20:44 · 109 阅读 · 0 评论 -
动态内存与智能指针
智能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象。新标准库提供的两种智能指针的区别在于管理底层指针的方式:shared_ptr允许多个指针指向同一个对象;unique_ptr则独占所指向的对象。标准库定义的weak_ptr伴随类,是一种弱引用,它指向shared_ptr所管理的对象。1.shared_ptrshared_ptr 和 unique_ptr都支持的操作:sha...原创 2019-04-09 10:25:09 · 136 阅读 · 0 评论 -
c语言中的变参问题
VARLVAR_LIST是C语言中解决变参问题的一组宏,在用法:定义va_list型变量,该变量是指向参数的指针用va_start宏初始化刚定义的var_list变量, 这个宏的第二参数是第一个可变参数的前一个参数,是一个固定的参数用va_arg返回可变的参数,va_arg的第二个参数是你要返回的参数的类型用va_end宏结束可变参数的获取。然后你就可以在函数里使用第二个参数了...原创 2018-07-03 09:24:55 · 404 阅读 · 0 评论 -
Python协程——流畅的Python
协程是指一个过程,这个过程与调用方协作,产出由调用方提供的值。1.1、用作协程的生成器的基本行为>>> def simple_coro2(a):... print('-> Started: a =', a)... b = yield a... print('-> Received: b =', b)... c = y...原创 2018-05-04 22:10:56 · 586 阅读 · 0 评论 -
Python装饰器
概念函数装饰器概念与作用:函数装饰器是可调用的对象,其参数是另一个函数。装饰器可能会处理被装饰的函数,然后把它返回,或者将其替换成另一个函数或可调用对象。函数装饰器用于在源码中“标记”函数,以某种方式增强函数的行为,例如:插入日志、性能测试、事务处理、权限校验等。1、函数装饰器1.1 函数的函数装饰器的一个例子def decorator(func): def wra...原创 2018-05-02 22:14:14 · 147 阅读 · 0 评论 -
Python的Queue
#创建一个“队列”对象import Queuemyqueue = Queue.Queue(maxsize = 10)Queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。将一个值放入队列中myqueue.put(10)调用队列对象的put()方...转载 2017-03-18 09:37:38 · 361 阅读 · 0 评论 -
python 内置函数 vars(),dirs(), globals(), locals()
dir():函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法dir(),该方法将被调用。如果参数不包含dir(),该方法将最大限度地收集参数信息。vars():默认打印当前模块的所有属性和属性值,如果传一个对象参数则打印当前对象的属性和属性值globals():以字典类型返回当前位置的全部全局变量。locals():会以字典类...原创 2018-01-29 19:07:07 · 482 阅读 · 0 评论