- 博客(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关注的人