- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 g++ 编译选项-static使用
在开发工具类的程序时,当编译好的可执行程序交付给其他部门运行时,总是提醒相应的库未安装,而安装库较为耗时,效率较低。通过在CMakelist中添加-static 选项,将可执行程序所需要的库直接按照静态库方式进行链接,交付变得简单高效。
2025-02-19 21:47:49
245
原创 赋值运算符重载
在进行代码调试时,发现赋值操作未成功,导致代码逻辑异常,经过分析,发现QVector3D 赋值重载函数存在问题,返回一个临时对象,从而导致赋值失败。如果类中涉及动态内存管理,返回一个新的对象可能会导致内存泄漏或双重释放,因为赋值运算符应该直接操作已有对象,而不是创建新的对象。返回的是对当前对象的引用,而不是一个新的对象。通常,赋值运算符直接修改已有对象,避免了创建和销毁临时对象的开销。按照惯例,赋值运算符应该返回对左值对象(即被赋值的对象)的引用。返回一个新的对象会导致这种链式调用的行为不正确。
2024-09-28 12:04:59
243
原创 gcc选项-fno-access-control 使用
在进行eigen库进行移植时,总是报编译错误:,单独写一个测试程序使用eigen库,编译跟运行都正常,但继承到项目中就是编译不通过,百思不得其解,后来查看资料,发现是这个项目中在编写单元测试时,修改了代码的访问权限导致的。
2024-09-28 11:33:34
657
原创 Windows 下 使用MinGW编译安装protobuf的步骤
在平时的开发过程中,需要使用protobuf,因此需要编译protobuf库。
2024-09-07 09:50:39
551
2
原创 python 安装库报错:ERROR: Could not install packages due to an OSError: [Errno 2] No such file or director
如果需要支持文件名大于260字符的情况,需要修改操作系统注册表,打开注册表,修改Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled (Type: REG_DWORD) 为1,问题解决。仔细分析发现,在Windows下,文件名最大长度不能超过260个字符,而上面的文件名长度明显超出了系统识别的范围。
2024-08-25 17:15:33
1367
原创 python 使用zmq库运行报错:epoll.cpp:73
在Windows下运行python脚本,使用ZMQ进行通信时,总是运行报错:Bad file descriptor (C:\Users\runneradmin\AppData\Local\Temp\tmp5myudkdg\build\_deps\bundled_libzmq-src\src\epoll.cpp:73)缺少ipykernel库。
2024-08-25 17:07:20
329
原创 unordered_map 与map使用说明
unordered_map是一个无序容器,它基于哈希表(Hash Table)实现。它使用键的哈希值来存储和访问元素,因此在`unordered_map`中插入和查找元素的时间复杂度通常为O(1),具有常数时间复杂度的特点。然而,由于哈希表的实现方式,`unordered_map`的元素顺序是不确定的。
2024-04-20 16:05:19
830
原创 C++ std::lower_bound()和std::upper_bound()函数使用
std::lower_bound 返回第一个大于等于value值的迭代器,如果没有查找到,则返回无效迭代器;std::upper_bound返回第一个大于value值的迭代器,如果没有查找到,返回无效迭代器;这个两个函数内部使用的都是二分查找法,被查找的对象必须是有序的,否则会出现非期望结果。
2024-03-30 09:38:52
977
原创 IEEE754 浮点数存储分析
浮点数数据在计算机中的是按照特定的编码格式进行存储的,下面我们就以float数据-20.5来分析一下浮点数的存储格式。
2024-01-27 13:00:10
1121
1
原创 线程内存泄露问题
最近在定位一个创建线程失败的问题,创建线程,线程执行完毕后自动销毁,大概运行1.5天后,就会出现线程创建失败情况。计算了一下线程创建次数,大概在1800次左右。怀疑是内存不够导致,使用top命令查看内存增长情况,发现有一个进程内存占用率不断增加,检查代码排除掉申请堆空间忘释放情况,上网搜了一下,发现使用pthread_create(&threadid, NULL, func, NULL);形式
2012-07-03 17:56:39
5143
原创 linux 共享内存消息队列使用
共享内存和消息队列使用/****************************************************************************** 版权所有 (C), 2001-2011, ************************************************************
2012-05-19 10:24:50
1691
原创 linux下消息队列使用
这几天在学习消息队列使用,终于编写了一个简单的测试程序,拿出来与大家分享下: /****************************************************************************** 版权所有 (C), 2001-2011, ******************************
2012-05-17 15:53:35
1084
原创 文本文件与二进制文件的区别
<br />文本文件与二进制文件的区别:<br />1、所有的计算机文件在外部存储设备中都是以二进制的形式存储的。文本文件中,数据以ASCII码形式存储,而在二进制文件中,数据以真实的数值形式存储。<br /> <br />2、文本文件是一种特殊的文件,它所存放的每一个字节都可以转为一个可读的字符,而这种转化需要程序员自己完成,然后将生成的字符写入文本文件。而二进制文件则不需要再写入前进行这样的转化。直接将数据在内存中的表示形式写入二进制文件。即数据在内存中存储方式与再二进制文件中的存储方式一样。<br /
2011-02-20 08:42:00
1264
原创 再说指针
最近在做一个函数实现,用到通过函数形参来返回有效数据,用到指针,特意翻了翻《C专家编程》,发现以前看过的很多知识点都忘了。认真分析了一下,得出了一些自己的理解,再次记录一下,以便以后查阅 #include void SetDate(int *pndata,int ncounter){ int i; int *pnData; pnData = pndata; printf("pnData value is %p/n pnData addr is %p/n",pnData,&
2010-12-13 16:57:00
1458
原创 比较有意思的指针
<br />最近看到一个关于指针的比较有意思的例子,拿来与大家分享一下。<br />#include <stdio.h><br />#include <string.h><br />#include <stdlib.h><br />void GetMemory(char *p)<br />{<br /> p = (char *)malloc(100);<br />}<br />void main(void) <br />{<br /> char *str = NULL;<br />
2010-11-10 20:58:00
653
原创 关于整型数据符号位扩展的问题
<br /> 关于符号扩展的问题,我们大家读到最多的一句关于符号扩展规律就是“对于无符号整型数据,要扩展成符号位的话,就是将扩展位补零,其他位保持不变。但对于有符号整型数据的符号扩展规律就是:符号扩展为补1,其他位保持不变。”刚开始自己也不太明白为什么会这样扩展,只是记住了这个规律,后来认真考虑了一下,才明白这里的缘由。<br /> 个人认为这个符号扩展的规律是极其不负责任的说法,尽管这个规律不管在什么境况下都是正确的。举个关于符号扩展的例子:<br />int a;<br />char
2010-10-15 21:54:00
2541
原创 由 memcpy 与 memset 引发的思考
无聊的时候翻了翻《C标准库》,无意间发现了一个很有意思的问题,就拿来与大家分享分享我们首先看一下这两个库函数原型:1、memcpy 函数原型为 : void *memcpy(void *s1 ,const void * s2 ,size_t n){ char *su1; const char *su2; for(su1 = s1,su2 = s2;0 { *su1 = *su2; } return (s1);}2、memset 函数的原型为:void *memset(void *s,int c,size
2010-08-30 21:30:00
1100
原创 对于返回局部指针变量的思考
我们大家都知道指针函数的返回指针不能指向函数内的自动变量,如果需要返回函数的内部变量的话,就需要将该变量声明为静态变量。为什么函数能够返回静态变量的地址而不能返回局部自动变量的地址,到底什么样的对象能够返回其地址,而什么样的对象不能够返回其地址?静态变量与局部自动变量的主要区别是什么? 要想明白这些就需要理解程序的内存布局情况 程序的存储区域分为:代码段、只读数据段、已初始化的读写数据段、未初始化的数据段、堆、栈。 1、代码段、只读数据段、已初始化的读写数据段、未初始化的数
2010-07-18 21:45:00
3379
3
原创 关于指针强制类型转换的思考
说不上是思考,只是想谈谈自己对指针的强制类型转换的理解。之所以写出来,一方面是自己做一个笔记,另一方面也可以和大家探讨探讨,更重要的也是向大家学习。以前总是记不住指针的强制类型转换的格式,归根结底还是自己对这个知识点不够理解。 什么是指针变量 指针变量,本质上是一个变量,只是它是存放地址的变量,指针的类型代表的是它所指向的变量的类型。因此就有了指向整型、字符型、浮点型等其它类型的指
2010-07-07 18:59:00
9200
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人