摘要:在 C++ 的标准库中,resize() 和 reserve() 是用于操作 std::vector 容器的两个不同函数,它们的作用和效果有所区别。 resize() 函数 resize() 函数用于改变 std::vector 容器的大小,即调整容器中元素的数量。 如果当前 vector 的大小小
阅读全文
摘要:为了方便进行分析调试,希望当程序发生崩溃或者收到 SIGSEGV、SIGABRT 等信号时,系统会生成相应的核心转储文件。 核心转储大小限制 首先,要检查核心转储的大小限制。可以使用 ulimit 命令来查看当前用户的核心转储大小限制: ulimit -c 如果输出为 0,则表示不生成核心转储文件。
阅读全文
摘要:在 I/O 多路复用中,epoll、poll 和 select 是常用的三种机制,它们都可以用于实现事件驱动的网络编程。 select select 是 Unix 系统最早引入的 I/O 多路复用函数,它允许一个进程监视多个文件描述符,当其中任何一个文件描述符准备好进行 I/O 操作时,select
阅读全文
摘要:pragma 是一个在 C 和 C++ 中使用的编译器指令,用于向编译器发出特定的命令或控制编译的行为。 控制编译警告 通过 #pragma warning 指令,可以在特定位置或范围内控制编译器的警告行为,如禁止某个警告、将警告作为错误处理等。例如禁止特定的编译警告: #pragma warnin
阅读全文
摘要:cgroups 是内核提供的一种机制,可以用来限制一组进程的资源使用。通过创建 cgroups 并设置相应的限制参数,可以确保多个程序共同运行时每个程序占用的资源受到限制。 挂载 cgroup 文件系统 查看 cgroup 是否已经挂载: mount | grep cgroup 如果没有挂载,则编辑
阅读全文
摘要:asan、valgrind、coverity和gpertools都是用于帮助开发人员发现和调试代码中的各种问题的工具,但它们在特定方面有着不同的重点和功能。 ASan (AddressSanitizer): ASan 常用于 C/C++ 代码的静态和动态内存访问错误检测,通过在编译时注入额外的代码来
阅读全文
摘要:用一个函数判断当前系统是大端序(big-endian)还是小端序(little-endian): #include <stdio.h> int check_endian() { unsigned int num = 1; char *ptr = (char *)# return (int)*
阅读全文
摘要:基类类内成员的内存分布 常见类内成员大致分为:类内变量、类内函数、静态变量、虚函数等,内存分布遵循: 所有成员会按照声明的顺序布局 类内成员会进行大对齐 类内函数不占用类的内存,存储在代码区 静态变量不占用类的内存,存储在全局/静态区 所有虚函数共用一个虚函数表指针,虚函数表指针不按声明顺序布局,如
阅读全文