随笔分类 - C/C++
摘要:https://www.cnblogs.com/skandbug/p/16264609.html Strace的介绍与使用 Strace简介 strace命令是一个集诊断、调试、统计于一体的工具,常用来跟踪进程执行时的系统调用和所接收的信号,我们可以用它来监控用户空间进程和内核的交互。如对应用程序的
阅读全文
摘要:意外的崩溃,在日志没法有效支撑时,core dumped是一种有效的调试方法。linux的core-dump默认是关闭的,在使用时,我们需要作以下设置: 1)设置 core 的存储目录和命名格式 主要是修改配置文件 /proc/sys/kernel/core_pattern # 1. 默认在当前程序
阅读全文
摘要:bug调试要根据应用场景和条件,选择什么样子的调试方式很大程度上不是你想选择什么样的调试方式,而是还剩下什么样子的调试方式可用。下面就根据不同的场景和条件来总结一下。 目录: 1、gdb调试或者IDE自带的调试工具 2、堆栈调用 3、日志打印 4、strace 5、信号函数捕捉 6、代码静态检测Cp
阅读全文
摘要:关于匿名对象与临时对象,这个概念不是绝对的,概念的区分往往十分拗口难记。要根据作用域,生存时间和用法来来决定;工作多年这些拗口的概念我从来没有真的记住过,也没有一个博客讲清楚他们的区别。这里我们参考《Effective C++》中得称谓,称之为局部对象。但是局部也是有范围得。下面论证。 1 无名则无
阅读全文
摘要:多态: C++的多态是通过一张虚函数表(Virtual Table)来实现的,简称为 V-Table。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆写的问题,保证其真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类
阅读全文
摘要:———————————————综述与目录—————————————— 讨论这个问题之前我们先明确类的结构,一个类的大概组成,下面的很多分类名词都是我个人杜撰,为的就是让读者看懂能够区分,下面分别分类: 目录 空类 不含任何成员变量,也不继承某个基类。 结构类 像C语言中结构体一样,要么只包含基本数据
阅读全文
摘要:本篇随笔讨论一个比较冷门的知识,继承结构中内存对齐的问题,如今内存越来越大也越来越便宜,大部分人都已经不再关注内存对齐的问题了。但是作为一个有追求的技术人员,实现功能永远都是最基本的要求,把代码优化到自己想要的样子才能从中找到真正的愉悦感。这便是我们追求细节的意义。 声明:以下例子,以x86_64
阅读全文
摘要:服务器部署问题: 本质上,目标程序开发完成后,要在机器上部署,要求开发机器必须于服务器环境一致,这样风险相对较小,部署相对容易。可是现实中常常因为各种原因,很难保证开发机器与部署机器的一致性。下面是一些问题总结。 动态库依赖动态库 最常问题: 库版本兼容问题(如:`GLIBCXX_3.4.20' n
阅读全文
摘要:#include <map> #include <stdio.h> using namespace std; struct SrsMemoryObject { void* ptr; std::string category; int size; }; std::map<void*, SrsMemor
阅读全文
摘要:最近由于业务需要在写内存池子时遇到了一个doule-free的问题。折腾半个晚上以为自己的眼睛花了。开始以为是编译器有问题(我也是够自信的),但是在windows下使用qtcreator vs2017 和Linux下 使用gcc纷纷编译执行得到相同的结果。有一点要说的是使用gcc和qtcreator
阅读全文
摘要:示例代码 1 #include <iostream> 2 using namespace std; 3 4 void Print() 5 { 6 cout<<"helloworld"<<endl; 7 } 8 9 class TestDebug 10 { 11 public: 12 TestDebu
阅读全文
摘要:分享一个类似于Qt中QVariant类。 目录: 1 类型定义 2 数值操作 3 万能类型包装 4 使用 ——————————————————Begain—————————————————— 类型定义 typedef.h #ifndef TYPEDEF_H #define TYPEDEF_H #in
阅读全文
摘要:关于new/delete,援引C++ Primer中的一段话: 某些应用程序对内存分配有特殊的要求,因此我们无法直接将标准的内存管理机制直接应用于这些程序。他们常常需要自定义内存分配的细节,比如使用关键字new将对象放置在特定的内存空间中。为了实现这一目的,应用程序需要重载new运算符和delete
阅读全文
摘要:泛型编程中,模板会根据传入类型的不同,生成多种实例,相对低效。 模板编程: #include <iostream> using namespace std; //未使用函数包装器 template <typename T,typename F> T use_f(T v, F f) { static
阅读全文
摘要:类型做参数是C++模板实现的主要形式。由此实现了类模板-->模板类-->实例的过程 当然除此之外也可以参考bitset的实现方式,参数决定类型的做法。 #include <iostream> using namespace std; template <bool condition> void Fu
阅读全文
摘要:援引https://www.cnblogs.com/qinqiao/p/how-to-compile-apue-v3-apue_h.html 关于apue.3e中apue.h的使用 近来要学一遍APUE第三版,并于此开博做为记录。 先下载源文件: 1 # url: http://http//www.
阅读全文
摘要:根据C++11特性实现,基本上实现了同SharePtr同样的功能,有时间继续优化。之前一直以为引用计数是一个静态的int类型,实际上静态值是不可以的。之前项目中总是不太习惯使用智能指针。通过自实现的方式,充分了解了智能指针的实现。
阅读全文
摘要:我是一个搬运工:https://blog.csdn.net/yusiguyuan/article/details/39496057 如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看。 majflt代表major fault,中文名叫大错误,mi
阅读全文
摘要:C语言内存管理 内存组成 我们现在把这个模型进行简化,简化如下: 代码段、数据段、BSS段在程序编译期间由编译器分配空间,在程序启动时加载,由于未初始化的全局变量存放在BSS段,已初始化的全局变量存放在数据段,所以程序中可以减少的使用全局变量以节省程序编译和启动时间;栈和堆在程序运行中由系统分配空间
阅读全文
摘要:可重入 概念: 可重入函数,即函数(操作)中断后,再次进入该函数继续执行仍能得到正确的结果,这里强调的是中断后能正确执行。 举个例子: 程序执行到某个函数foo()时,收到信号,于是暂停目前正在执行的函数,转到信号处理函数,而这个信号处理函数的执行过程中,又恰恰也会进入到刚刚执行 的函数foo(),
阅读全文