Debug实录
文章平均质量分 62
PGZXB
这个作者很懒,什么都没留下…
展开
-
g++出现In instantiation of ...required from here ...warning可能的的解决方法
头一次碰到g++出现了一个很奇怪的警告,输出信息大概是 : In instantiation of …required from here …warning改来改去改不掉,最终发现是因为构造函数初始化列表没有按照类内声明变量的顺序来写,比如class A {public: A(int a, char b) :m_b(b), m_a(a) { } // warning private: int m_a; char m_b;}// 改成下面这样就没..原创 2021-03-08 17:02:45 · 5909 阅读 · 0 评论 -
对象池/内存分配器的依赖问题
在昨天写C++ Json解析库时遇到了很难找的Bug,利用对象池管理不同类型的对象,这些对象不是相互独立的而是互相依赖的。这就导致了在最后对象池执行析构时释放所有的对象出现了问题,具体如下。Node类,是一个泛化的值,底层利用union/variant以实现可以容纳Json要求的所有类型的值,Number,Null,True,False,String,Array,Object等等。其中String,Array和Object时特殊的,其中含有指针用来指向分配好的对象,这就涉及到了析构。String类,其原创 2021-03-03 15:10:39 · 144 阅读 · 1 评论 -
在Qt-Creator可正常运行, 直接运行可执行文件有异常
在Qt-Creator可正常运行, 直接运行可执行文件有异常可能的一个原因 : 两种运行方式的工作目录不同,在Qt-Creator中运行时, 默认工作目录为build文件所在目录,但是执行.exe等可执行文件时目录为可执行文件所在目录,可能会导致某些资源文件或者数据库文件(尤其是数据库文件, 资源文件一般加载到资源文件中)加载失败. 另 : 使用windeployqt等添加打包时有可能会在对应的目录(相对目录)生成空的对应文件.方法: 将所要依赖的文件copy/move到相对于可执行文件的对应原创 2020-08-19 21:22:07 · 945 阅读 · 0 评论 -
C++ inline关键字与g++报错undefined reference to ...
C++ inline关键字与g++报错undefined reference to …今天在Linux下编写select网络模型的程序时, 对fd_set进行了简易的封装, 文件有3个, 分别为main.cpp FDSet.cpp FDSet.h, 发现使用g++命令编译时死活编译不过,# 使用的命令g++ main.cpp FDSet.cpp -o main -I ./使用了很多方法报错均为/usr/bin/ld: /tmp/ccpLMDcl.o: in function `main':se原创 2020-08-12 20:38:00 · 1020 阅读 · 0 评论 -
Linux Socket编程使用inet_ntoa得到0.0.0.0
Linux Socket编程使用inet_ntoa得到0.0.0.0原因: 使用accept函数时, 传入的指向sockaddr的大小的指针没有初始化, 应该初始化为sizeof(sockaddr), 本以为大小指针是只写的, 看来有点自我臆想了原创 2020-08-07 09:06:44 · 475 阅读 · 0 评论 -
Qt 编译出现报错:multiple definition of something解决方法:
Qt 编译出现报错:multiple definition of something解决方法:由于多次引入头文件导致, 注意在*.h文件中使用头文件保护措施// file : header.h#ifndef __HEADER_H_#define __HEADER_H_// file body#endif*.pro文件中HEADERS+=或者是SOURCES+=了相同的文件, 将相同的文件去重即可# 例子SOURCES += \ src1.cpp \ src2.cpp原创 2020-08-07 00:25:17 · 1355 阅读 · 1 评论