自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 [c++]static的一些基础

从颜色可以看出,static 声明变量的操作并不在创建b和b++之间执行。只有使用了静态变量,编译器才会真正创建它,修改代码为。

2024-01-08 14:40:59 367

原创 [c++]i++和++i的左值右值问题

由于前置++返回的是本身的引用,而后置++返回的是一个临时的拷贝。所以表达式 x++ 返回的是一个将亡值,我们无法对其取地址,所以是一个右值,而 ++x 返回的是 x 本身,所以是一个左值。我们采用代码来验证一下,使用一个万能引用来传入表达式的返回值,然后使用 decltype 对参数的类型进行推导,最后使用 type_traits 进行左右值的判断。可以看到结论:表达式 i++ 是一个右值, ++i 是一个左值。其原理也很基础,我们仿写一下 int 的前置++和后置++。

2023-12-20 17:20:53 578

原创 [c++]push_back的tip

所以,如果你的结构体或类删除了拷贝构造函数,就需要给 push_back 传入一个右值。当然,你也可以直接使用 emplace_back,也不会有这样的问题了。因为 std::thread 的实现中是删除了拷贝构造函数的,所有在调用 push_back 时需要传入一个右值,传入左值就会提示你拷贝构造已经被删除。但是,在查看 vector 的代码时,发现 push_back 有两个重载函数,传入常量左值引用也不会导致拷贝发生,那么这个拷贝构造是发生在什么地方呢?

2023-12-20 16:58:15 350

原创 dlsym检测内存泄漏

malloc函数的enable_malloc_hook = 0,所以直接进入p = malloc_f(size);,而enable_free_hook = 1,所以会进入到if(unlink(buff) < 0)的判断中,导致程序出错。发现在sprintf()执行之后就打印了 double free: (nil), 意识到在sprintf()底层可能使用了malloc和free。修改方法:在malloc函数中加入对free_hook函数的控制。/checkleak中的.mem文件也没有删除掉。

2023-12-04 15:09:01 579

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除