秋招学习笔记 day46

1.http 与 https 的区别逐字稿

https 是在 http 的基础上,在 tcp 连接之后建立 tls 连接,tls 通过证书验证服务器身份,并通过非对称加密等协商密钥,使用对称加密的方式传输数据,https 还会校验数据的完整性。

2.new 和 malloc 的区别

new 是 c++的分配堆上空间的方法,而 malloc 属于 c,new 会在分配空间之后调用对象的构造函数而 malloc 不会,new 返回的是指向对象的指针,malloc 返回的是无类型的指针,new 之后要 delete,malloc 后要 free。

在调用失败之后 new 是抛出异常,而 malloc 是返回 nullptr。

3.进程退出的几种方法

首先是主动退出的方法,main 通过 return 退出进程,可以使用 exit 这个 c 库函数去退出,exit 会刷新 stdio 缓冲区,系统调用 exit 也可以退出。

异常退出的情况可以使用 abort 也可以是在接收到一些信号比如 ctrl+c 的情况下进程会退出。

4.关于智能指针

c++的智能指针是基于 Raii 资源管理方式,管理动态对象生命周期的方法,可以避免手动 delete 造成的内存泄漏。

uniqueptr 独享所有权,不能被拷贝只能被移动。

sharedptr 共享对象所有权,内部有引用计数,当引用计数为 0 时自动释放对象的空间。

weakptr 和 sharedptr 是结合起来使用的,解决了 sharedptr 循环引用的问题,在使用前要通过 lock 去尝试获得 sharedptr 再去使用。

5.避免僵尸进程的方法

可以通过父进程 wait wait pid 去回收资源,可以使用信号处理函数去收到信号时去 wait pid 回收资源,如果不关心子进程退出可以忽略信号由内核进行处理,也可以使用两个 fork,子进程立马 exit 由父进程回收资源,孙进程变成孤儿进程由 init 进程回收。

相关推荐
码匠许师傅5 小时前
【C++三方组件】cpp-httplib:一个头文件起 HTTP 服务
开发语言·c++·http
无名猿6 小时前
new/delete 与 malloc/free:为什么绝对不能混用
c++·内存管理·现代c++·踩坑记录
2601_962218618 小时前
C++中decltype关键字的实现
开发语言·c++
繁华的地方不一定留下你的脚印9 小时前
C++ std::variant 与 std::visit:安全保存多种类型,写清每个处理分支
开发语言·c++
程序员老陆9 小时前
WIN32_LEAN_AND_MEAN:Windows 头文件里的“精简编译开关”
c++·windows
hold?fish:palm10 小时前
45 二叉树的右视图
开发语言·c++·算法
ShineWinsu10 小时前
对于Redis:Redis的认识以及分布式系统的解析
linux·数据库·c++·redis·缓存·消息队列·分布式架构
布莱克60510 小时前
在C++中,构造函数能不能是虚函数?析构函数为什么要虚?
开发语言·c++·构造函数·析构函数·虚函数
旖旎夜光11 小时前
LeetCode 137 : 只出现一次的数字 II(位运算) —— 题解
c++·笔记·学习·算法·leetcode·力控