自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 亲手实践Allocators

亲手实践Allocatorsnew()无法对C++ STL的对象的内存操作进行管理(如std::list和std::map)。为此,C++又提出了新的概念叫做allocator,allocator可以对指定的类型定义内存如何分配和释放。C++ allocator介绍有两种不同的allocator:equal allocatorunequal allocator当==操作符返回值为真时,称其为equal allocator,此时可以用一个allocator分配内存,而用另一个来释放这片内存。un

2020-07-18 08:53:51 250

原创 Linux异常错误处理

《Hands-On System Programming with C++》读书笔记之十三本章介绍三种Linux系统开发中的异常处理的方法:POSIX风格C风格C++风格POSIX风格的错误处理POSIX风格错误处理提供最基本的错误处理,通用性最高。一般地,函数成功时返回0,失败时返回-1并把错误代码存入全局宏定义errno。#include <cstring>#include <iostream>int myfunc(int val){ if (

2020-07-11 05:42:02 1734

原创 学习POSIX和C++多线程开发

《Hands-On System Programming with C++》读书笔记之十二理解POSIX线程线程与进程的主要区别在于线程存在于进程之内同一进程内的线程共享内存空间,进程之间不共享(除非特意开辟共享内存)线程同样由操作系统调度,面临竞争与死锁等问题。POSIX线程基础一个简单的例子:#include <iostream>#include <pthread.h>void *mythread(void *ptr){ std::cout &

2020-07-09 06:51:45 372

原创 Unix的时间接口

《Hands-On System Programming with C++》读书笔记之十一POSIX的时间API time.hPOSIX的时间API是基于标准C的,但在C++中仍然需要使用。API的类型POSIX API time.h中定义了三种时间数据类型:tm:封装日期和时间的结构体;time_t:代表秒的单位,通常是整型;clock_t:应用所占用的处理器时间需要注意还有不同的时间定义:System clock:操作系统维护的日期与时间,可能随时被修改Steady clock

2020-07-07 08:20:31 305

原创 学习文件输入/输出

学习文件输入/输出在C++17以前,操作文件使用的是非C++的API,它们是不安全、不通用甚至是不完整的。打开文件不同的方法使用std::fstream对象,如下例:#include <fstream>#include <iostream>int main(){ if (auto file = std::fstream("text.txt")) { std::cout << "success\n"; } e

2020-07-03 05:20:17 633

原创 全面理解内存管理

全面理解内存管理关于new()和delete()函数

2020-06-30 01:48:24 254

原创 学习控制台输入输出

Learning to Program Console Input/Output基于流的IO与C语言的printf()和scanf()不同,C++的输入输出基于流。std::cout和std::wcout对象都是std::ostream类的实例,他们输出数据到标准C的stdout(即当前标准输出设备,可以是屏幕、打印机或文件),前者支持ASCII,后者支持Unicode。类似地,std::cin和std::wcin接收来自stdin的数据。C++基于流的IO之优劣C++基于流的IO之优势简洁

2020-06-23 07:36:48 374

原创 Linux/Unix系统编程

Programming Linux/Unix SystemsThe Linux ABIThe System V ABIUnix System V是Unix的第一个版本。Linux采用了了System V ABI规范并沿用至今。注意这里指的是x86平台,在ARM平台上的ABI并不是完全相同的。System V AB定义了一个应用程序的底层细节,包括:寄存器格式这里仅限介绍Intel-64bit(AMD64)平台。rip是指令指针,定义指令的当前位置。rsp是栈指针,rbp是栈头指针,共同定义了

2020-06-18 08:18:20 909

原创 C++, RAII, and the GSL Refresher

C++, RAII, and the GSL RefresherA Brief Overview of C++17Language Changesif/switch声明中的变量初始化下面的代码需要使用g++ -std=c++17 scratchpad.cpp编译。#include <iostream>int main(void){ if (auto i = 42; i > 0) std::cout << "Hello World" &lt

2020-06-13 05:17:48 165

原创 C与C++的数据类型

System Types for C and C++探索C/C++默认数据类型char: 通常但不总是8bits, corresponding with the ASCII, 编译器区别对待它和一般整型。#include <iostream>int main(void){ int i = 0x42; char c = 0x42; const char *str = "Hello World\n"; std::cout << i << '\n'; //

2020-06-12 02:17:20 187

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除