C++
liu-yonggang
不积跬步无以至千里,不积小流无以成江海
展开
-
C++解析XML 工具非常好用
开源解析XML 小工具,非常好用https://pugixml.org原创 2022-03-02 10:05:00 · 698 阅读 · 0 评论 -
libcxx new的实现,以及新标准的用法
概述new是c++的new 运算符,new所做的工作:分配内存空间在分配的内存空间里,构造和初始化一个没有名字的对象,或者一个没有名字的对象数组。new表达式返回的是一个右值指针,指针指向的是分配空间的其实地址。c++ 14\17\2a 中增加了一些新的用法new用法// new synopsisnamespace std{class bad_alloc : public exception{public: bad_alloc() noexcept; ba原创 2021-07-25 14:39:34 · 262 阅读 · 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 · 542 阅读 · 0 评论 -
C++智能指针、原子操作、容器等实现源码 - libcxx介绍
https://github.com/google/libcxx软件简介LibCXX 是一个 C++ 类库,提供了高级的应用框架类和一些 Linux 专有的特性封装。libc++ DocumentationThe libc++ documentation is written using the Sphinx documentation generator. It iscurrently tested with Sphinx 1.1.3.To build the documents into h原创 2021-07-20 17:19:13 · 506 阅读 · 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 · 64 阅读 · 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 · 438 阅读 · 0 评论 -
总结一下开发android jni 遇到的坑
开发android jni 遇到的问题android jni 分为静态加载和动态加载示例地址JNI 静态注册与动态注册Android JNI静态加载失败,改为动态的方式成功加载。在jni中调用静态类加载动态库的方法将函数指针保存到map中,在new 一个类,调用静态类获取函数指针失败。文件权限问题。jin成功运行,但是依然报错Cannot load symbol : _plug...原创 2020-01-23 13:56:01 · 478 阅读 · 0 评论 -
std::ref和std::cref的作用
std::ref和std::cref的作用https://blog.csdn.net/lmb1612977696/article/details/81543802转载 2020-01-10 13:12:11 · 404 阅读 · 0 评论 -
《C++代码整洁之道》-正确地使用const
正确地使用constconst 正确性对于实现更好、更安全的C++代码来说是一种很实用的方法。实用const可以省去很多麻烦且节省调试时间,因为违反const会直接导致编译时错误。还有,const的使用也可以支持编译器的一些优化算法,这意味着正确使用该限定符,也是一种提高程序执行性能的有效方法。不幸的是,许多开发人员低估了使用const的好处,我的建议是这样的:NOTE:const的正确性。尽...原创 2019-06-09 14:26:30 · 474 阅读 · 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 · 263 阅读 · 0 评论 -
面试技术题
一.C++部分为什么将析构函数定义成虚函数有什么好处?class与struct 区别?C++智能指针有那些?都有什么区别static的作用?拷贝构造函数作用? 如何声明?C++11包括哪写?虚函数的底层是如何实现的?SOCKET有哪写API?什么是菱形继承?什么是RAII?explicit关键字的作用?volatia关键字的作用?什么是左值和右值?在构造函数和析构函数...原创 2018-11-13 20:57:32 · 304 阅读 · 0 评论 -
linux 上查询cache 大小的方法
一.命令查询a). 直接查看文件$ cat /sys/devices/system/cpu/cpu0/cache/b). getconf 命令$ getconf -a | grep CACHELEVEL1_ICACHE_SIZE 32768LEVEL1_ICACHE_ASSOC 8LEVEL1_ICACHE_LINESIZ...原创 2018-11-09 22:23:01 · 12479 阅读 · 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 · 1475 阅读 · 0 评论