随笔分类 - C++
摘要:转自:https://www.cnblogs.com/shengulong/p/8053370.html gdb调试python的时候,需要根据不同的python版本2.6、2.7、3.x安装相应的gdb; 如何指定关联的python版本? 下面gdb源码,解压后,进入目录: ./configure
阅读全文
摘要:尝试将private定义成public--报错 redeclared with different access 查阅材料:https://stackoverflow.com/questions/47839718/sstream-redeclared-with-public-access-compi
阅读全文
摘要:描述字的传递,就是将一个进程中的描述字传递到另一个进程中,使得该描述字依然有效。 在多进程网络的CS模式下,服务器fork产生的子进程在fork调用返回后,子进程共享父进程的所有打开的描述字。即使在子进程中调用exec函数,所有描述字通常还是保持打开的状态,也就是描述子是跨exec函数的。这也是为什
阅读全文
摘要:采用静态或者全局变量的实现方案由于C++不能保证静态或者全局对象的构造函数的调用顺序以及析构顺序。所以如果程序中有多个用此方法实现的Singleton类,它们之间又有某种构造依赖关系和析构依赖关系,就会造成灾难性的后果。所以,只有当肯定不会有构造和析构依赖关系的情况下,这种实现才是合适的。 > 优点
阅读全文
摘要:如何区分一个类(class struct union)是否可以使用列表初始化来完成初始化工作呢?关键问题看这个类是否是一个聚合体(aggregate),首先看下C++中关于类是否是一个聚合体的定义:(1)无用户自定义构造函数。 (2)无私有或者受保护的非静态数据成员 (3)无基类 (4)无虚函数 (
阅读全文
摘要:交叉编译环境的linaro-gdb可以用了,结果打开core文件,显示堆栈都是?? aarch64-linux-gun-gdb ./test core warning: /lib/libpthread.so.0': Shared library architecture unknown is not
阅读全文
摘要:1.交叉编译环境下的linaro-gdb无法用。 参考:https://stackoverflow.com/questions/25314983/ldd-says-not-found-even-though-library-is-in-my-ld-library-path 交叉编译环境里面gdb报错
阅读全文
摘要:参考:https://stackoverflow.com/questions/13403824/empty-core-dump-file-after-segmentation-fault 1.受限要开启coredump的大小限制。ulimit -c unlimited 2.core文件不能在挂在分区
阅读全文
摘要:双引号"xxx.h",表示编译器先在用户的工作目录下搜索头文件,如果搜索不到则到系统默认目录下去寻找,所以双引号一般用于包含用户自己编写的头文件。如:#include "student.h" 尖括号<xxx.h>,表示编译器只在系统默认目录或尖括号内的工作目录下搜索头文件,并不去用户的工作目录下寻找
阅读全文
摘要:只能在uv_close之后的uv_cb中对handle内存进行释放。 因为uv_close本身只是将handle代释放队列,倘若释放时遇到某些异步处理(如:uv_write)需要失败回调通知,将会继续调用对应的回调,此时再访问handle和可能因内存访问coredump。 void TcpHandl
阅读全文
摘要:gcc -dM -E - < /dev/null gcc -dM -E - < /dev/null
阅读全文
摘要:shared_ptr允许多个指针指向同一个对象;unique_ptr则"独占"所指向的对象。 所以看使用者的意图,想这个对象咋么用。 weak_ptr只是是辅助类,它是一种弱引用。本质应该没啥作用,它可以为强引用提前占位,但它的存在不会占据引用计数。 比如enable_shared_from_thi
阅读全文
摘要:基本这个错误基本就是出现在shared_from_this调用过程中。 或者对应对象不是用make_shared分配,或者对应的对象已经释放了(实际释放后也不一定就会报错,但是当使用valigrind检查内存时,释放内存后会把内存重置,此时会检测到weak_ptr应该设置的标识不对而报错。)。
阅读全文
摘要:libuv 采用了 异步 (asynchronous), 事件驱动 (event-driven)的编程风格, 其主要任务是为开人员提供了一套事件循环和基于I/O(或其他活动)通知的回调函数, libuv 提供了一套核心的工具集, 例如定时器, 非阻塞网络编程的支持, 异步访问文件系统, 子进程以及其
阅读全文
摘要:libuv的三种运行模式: UV_RUN_DEFAULT: 默认轮询模式,此模式会一直运行事件循环直到没有活跃句柄、引用句柄、和请求句柄 UV_RUN_ONCE:一次轮询模式,处理一个事件。 UV_RUN_NOWAIT:一次轮询模式,最多处理一个事件。uv_run(loop, UV_RUN_NOWA
阅读全文
摘要:CPU 同内存交换数据的最小内存单位为4字节,即32位由CPU总线决定,所以小于4 字节的读取或者赋值操作无需加锁。即使不加锁也不会出现读取到的4字节中一半数据被改一半数据没有被改的情况。 但对 i++ 这类组合操作,仍可能需加锁. 因为i++是至少一次读取i一次写入i这两条命令,中间被打断就无法保
阅读全文
摘要:转载自:https://blog.csdn.net/yanxiangyfg/article/details/80989680 讲的很清晰 一、gcov简介gcov是什么gcov是一个测试代码覆盖率的工具。与GCC一起使用来分析程序,以帮助创建更高效、更快的运行代码,并发现程序的未测试部分是一个命令行
阅读全文
摘要:warning: specialization of ‘template<class _Iterator> struct std::iterator_traits’ in different namespace [-fpermissive] While everything works correc
阅读全文
摘要:期初现象:malloc一块内存,读写操作时发生segmentation falt。一般来讲malloc倘若失败应该抛出异常,所以malloc返回一个指针后,这个指针应该都是可用的,况且是进行读操作。 所以遇到这个问题时感觉很奇怪。 继续现象:经过地址打印确认该地址是前面操作过的一个地址。说明地址不在
阅读全文
摘要:推动存储管理方式从固定分区到动态分区分配,进而又发展到分页存储管理方式的主要动力是提高内存利用率。可以实现一个内存用于多个程序同时执行而不会发生地址冲突。引入分段存储管理方式的目的,则主要是为了满足用户(程序员)在变成和使用上多方面的要求(方便编程、信息共享、信息保护、动态增长、动态链接)。段是内存
阅读全文