
C++
liu-yonggang
不积跬步无以至千里,不积小流无以成江海
展开
-
打印堆栈信息
在实际使用中,backtrace函数会填充传入的数组(在这个例子中是array)来获取当前的调用堆栈的指针。backtrace_symbols函数会根据这个指针数组生成一个字符串数组,每个字符串包含对应于堆栈帧的一个可打印的符号名称。如果你需要更详细的信息,你可能需要使用额外的工具,例如addr2line命令,它可以将内存地址转换成源文件的行号和文件名。在Linux系统中,你可以使用backtrace和backtrace_symbols函数来打印当前线程的调用堆栈。原创 2024-10-24 16:56:17 · 427 阅读 · 0 评论 -
C++解析XML 工具非常好用
开源解析XML 小工具,非常好用 https://pugixml.org原创 2022-03-02 10:05:00 · 780 阅读 · 0 评论 -
libcxx new的实现,以及新标准的用法
概述 new是c++的new 运算符,new所做的工作: 分配内存空间 在分配的内存空间里,构造和初始化一个没有名字的对象,或者一个没有名字的对象数组。new表达式返回的是一个右值指针,指针指向的是分配空间的其实地址。 c++ 14\17\2a 中增加了一些新的用法 new用法 // new synopsis namespace std { class bad_alloc : public exception { public: bad_alloc() noexcept; ba原创 2021-07-25 14:39:34 · 366 阅读 · 0 评论 -
libcxx memory中智能指针的实现
概述 libcxx 中 shared_ptr 本身只是一个代理类,C++11 的泛型都是用模板实现的。 shard_ptr、unique、weak_ptr 这3个类的实现都是在memory 文件中。 属于使用时,用#include <memory>声明类型 原理 memory文件包含memory接口和内部逻辑,例如shard_ptr、unique、weak_ptr属于接口 shared_ptr实现 shared_ptr实现就是内部控制一个引用计数器 make_shared的实现 make_sh原创 2021-07-25 11:40:38 · 671 阅读 · 0 评论 -
C++智能指针、原子操作、容器等实现源码 - libcxx介绍
https://github.com/google/libcxx 软件简介 LibCXX 是一个 C++ 类库,提供了高级的应用框架类和一些 Linux 专有的特性封装。 libc++ Documentation The libc++ documentation is written using the Sphinx documentation generator. It is currently tested with Sphinx 1.1.3. To build the documents into h原创 2021-07-20 17:19:13 · 609 阅读 · 0 评论 -
C++ 11/14 左值右值
#include <stdio.h> template<typename T> void func(const T&& p) { printf("%d\n", p); } int main() { int i = 10; func(std::move(i)); return 0 } g++ test.c -o test -std=c++11 如何去掉std::move 出现 error: connot bind 'int' lvalue to 'con.原创 2021-07-17 17:09:50 · 89 阅读 · 0 评论 -
C++ 对比前n个字符并返回指向=后面的char 指针
定义一个字符指针数组 char *mParams[NL_PARAMS_MAX]; 用asprintf格式化字符串 asprintf(&mParams[0], "ADDRESS=%s/%d", addrstr, ifaddr->ifa_prefixlen); asprintf(&mParams[1], "INTERFACE=%s", ifname); asprintf(&mParams[2], "FLAGS=%u", ifaddr->ifa_flags); asprintf原创 2020-06-04 15:39:21 · 530 阅读 · 0 评论 -
总结一下开发android jni 遇到的坑
开发android jni 遇到的问题 android jni 分为静态加载和动态加载 示例地址 JNI 静态注册与动态注册 Android JNI 静态加载失败,改为动态的方式成功加载。 在jni中调用静态类加载动态库的方法将函数指针保存到map中,在new 一个类,调用静态类获取函数指针失败。 文件权限问题。 jin成功运行,但是依然报错 Cannot load symbol : _plug...原创 2020-01-23 13:56:01 · 639 阅读 · 0 评论 -
std::ref和std::cref的作用
std::ref和std::cref的作用 https://blog.youkuaiyun.com/lmb1612977696/article/details/81543802转载 2020-01-10 13:12:11 · 471 阅读 · 0 评论 -
《C++代码整洁之道》-正确地使用const
正确地使用const const 正确性对于实现更好、更安全的C++代码来说是一种很实用的方法。实用const可以省去很多麻烦且节省调试时间,因为违反const会直接导致编译时错误。还有,const的使用也可以支持编译器的一些优化算法,这意味着正确使用该限定符,也是一种提高程序执行性能的有效方法。 不幸的是,许多开发人员低估了使用const的好处,我的建议是这样的:NOTE:const的正确性。尽...原创 2019-06-09 14:26:30 · 530 阅读 · 0 评论 -
linux系统IPC通信-共享内存
很久以前就想研究一下内核源码,今天开始看看共享内存是如何实现的. 以前就了解几个函数. 共享内存使用的函数 #include <sys/ipc.h> #include <sys/shm.h> int shmget(key_t key, size_t size, int shmflg); void *shmat(int shm_id, const void *shm_a...原创 2018-12-07 18:33:48 · 319 阅读 · 0 评论 -
面试技术题
一.C++部分 为什么将析构函数定义成虚函数有什么好处? class与struct 区别? C++智能指针有那些?都有什么区别 static的作用? 拷贝构造函数作用? 如何声明? C++11包括哪写? 虚函数的底层是如何实现的? SOCKET有哪写API? 什么是菱形继承? 什么是RAII? explicit关键字的作用? volatia关键字的作用? 什么是左值和右值? 在构造函数和析构函数...原创 2018-11-13 20:57:32 · 429 阅读 · 0 评论 -
linux 上查询cache 大小的方法
一.命令查询 a). 直接查看文件 $ cat /sys/devices/system/cpu/cpu0/cache/ b). getconf 命令 $ getconf -a | grep CACHE LEVEL1_ICACHE_SIZE 32768 LEVEL1_ICACHE_ASSOC 8 LEVEL1_ICACHE_LINESIZ...原创 2018-11-09 22:23:01 · 13408 阅读 · 2 评论 -
析构函数可以调用纯虚函数吗?
1.子类析构函数可以调用纯虚函数.正常实现多态. 2.基类不可以调用纯虚函数,编译出错 #include <iostream> class A { public: A(){ std::cout << "A" << std::endl; } ~A() { AA(); std::cout << "~A" << std原创 2018-10-28 22:22:44 · 1547 阅读 · 0 评论