https://cdn.jsdelivr.net/gh/caibingcheng/resources@main/images/2B2pd1.png

BBing's Blog

自由 分享 合作

[转载]C,C++安全指南

目录 1 通用安全指南 I. C/C++使用错误 1.1 不得直接使用无长度限制的字符拷贝函数 1.2 创建进程类的函数的安全规范 1.3 尽量减少使用 _alloca 和可变长度数组 1.4 pr

博文聚合站-RSSBlog

RSSBlog RSSBlog 是一个基于RSS的博客内容聚合站. 想法来源: https://github.com/volfclub/travellings 及 https://front-end-rss.vercel.app/ 定位 这是一个值得一直思考的问题. 当初打算写RSSBlog是因为在个人博客添加友链时遇到

现代C++容易忽略的一些特性

持续更新中…主要来源在这里, 仅摘抄部分个人不常用或者不太理解的知识点.

语言

if/switch 变量声明强化[C++17]

C++17 使得我们可以在 if(或 switch)中使用局部变量:

1
2
3
4
5
// 将临时变量放到 if 语句内
if (const std::vector<int>::iterator itr = std::find(vec.begin(), vec.end(), 3);
    itr != vec.end()) {
    *itr = 4;
}

C++类的内存分布(二)

《C++类的内存分布》中, 我们使用gdb大概了解了C++类的内存结构, 并得到了以下结论:

  • 类成员函数只有一份,所有实例共享
  • 类的成员变量有多份,不同实例维护不同的成员变量
  • 即使是继承关系,派生类的成员变量也只是基类的复制体,而不是指向同一块内存
  • 派生类会把从基类继承过来的成员变量当做自己的普通成员变量一样看待
  • 类的虚表只有一份,所有实例共享
  • 编译器在编译的时候, 通过给类添加__vptr指针指向虚表而得到虚表地址.

本文主要目的是扩展vptr和vtable部分, 深入了解C++多态的实现原理.


tmux插件-保存会话

下载插件

1
2
3
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
git clone https://github.com/tmux-plugins/tmux-resurrect ~/.tmux/plugins/tmux-resurrect
git clone https://github.com/tmux-plugins/tmux-continuum ~/.tmux/plugins/tmux-continuum

进程控制和通信(五) · socket通信

socket通信应用

这是进程通信的最后一节. socket可以实现不同进程间的通信, 可以是相同机器的不同进程, 也可以是不同机器的不同进程.

本文的目的是简要学习socket通信的应用, 并且结合前几篇的内容, 学习socket通信的部分底层实现. 涉及到的一些api因为网上参考内容很多, 这里就不会介绍api的使用了.