![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
文章平均质量分 86
C/C++
Dokin丶
嵌入式码农
展开
-
内存泄漏定位工具
这里基于RT-Thread写了一个内存泄漏定位工具(实际和RTT无关,什么系统都可以用,要适当修改),原理非常简单:申请内存时,记录申请的内存地址、大小,以及申请内存这行代码所在的文件名和行号,当释放内存时,根据内存地址找到之前的记录并删除,最后留下的记录就极有可能是发生内存的代码(当然有些内存是常驻的,需要使用者自己辨别)。申请内存时会记录代码所在的文件名,MEM_TRACE_FILE_NAME_LEN就是文件名的最大长度,最终记录的只有最后级的文件名,不包含路径,所以16字节应该是够用的。原创 2023-08-28 15:57:29 · 390 阅读 · 0 评论 -
C++快速入门2——面向对象编程
1、继承的三种权限public:类内类外都能访问。protected:类内和子类可以访问,类外不能访问。private:只允许类内访问,子类和类外都不能访问。2、调整继承权限使用using 类名::变量名或方法,可以控制单个成员或方法的继承权限。使用方法如下,Son继承了Father之后,将Father类里的key权限改为public,外界也可以访问了;如果放在Son类的private下,那么key就变为Son私有的了,不能再被Son的子类所继承。class Father{ protec原创 2021-01-25 01:29:02 · 192 阅读 · 0 评论 -
C++快速入门1——基础知识
1、thisthis是个特殊指针,在class里面指向当前对象,例如。class Person{private: char *name;public: void setName(char *name) { this->name = name; }};2、::用于指定当前函数属于某个类,例如setAge函数属于Person类的一个方法。用于指定调用的函数是来自哪个命名空间,例如调用的是命名空间A里面的PrintVersion函数原创 2021-01-21 23:15:34 · 198 阅读 · 0 评论 -
C语言void指针的用法
在使用C语言进行开发的过程中,经常会遇到void*这样一个特殊的指针,容易被新手忽视,实际上void*非常强大。下面举几个比较常见的例子。1.用作泛型,接收任意数据类型指针void*用于指向特定地址,而无需关心这个地址上存放着什么类型的数据。例如常见的memcpy等函数就用到void*,函数原型如下:void *memcpy(void *des, void *src, size_t n)此处的void *des和void *src可以接收任意类型的数据类型指针,既然是内存拷贝,入参就不应.原创 2020-11-16 23:11:08 · 2684 阅读 · 4 评论 -
do while(0)的作用
在嵌入式开发的过程中,我们经常可以看到在一些优秀开源代码的头文件里发现一些宏定义使用了do{}while(0)语句,也许你会疑惑do{}while(0)不就是只执行一次吗,为什么还要多此一举使用循环结构去包裹。实际上,do{}while(0)的作用很大,下面可以看几个例子。一、定义复杂宏避免逻辑或编译错误假如你定义了一个宏,这个宏的作用为连续调用2个函数,宏定义如下:#define ...原创 2020-02-15 19:21:16 · 9992 阅读 · 8 评论