- 博客(5)
- 收藏
- 关注
原创 关于在C++中使用共享内存时数据类型使用的注意事项
如果共享内存中的崩溃:由于进程之间无法共享堆指针,访问无效地址可能导致程序崩溃。数据损坏:即使程序不崩溃,访问错误的数据区域可能导致数据被破坏,进而影响程序的正常运行。内存泄漏:如果一个进程释放了的内存,而其他进程仍然尝试访问该对象,会导致内存泄漏或访问空指针。在共享内存中使用可能导致严重的内存管理问题,因为每个进程的堆内存是独立的,的动态内存分配会导致指针在不同进程间失效,进而引发未定义行为。相比之下,使用简单的char[]数组可以有效避免这些问题,保证进程间共享数据的一致性和安全性。
2025-02-25 20:24:20
690
原创 使用Qt自带的数据库函数QSqlQuery读取大数数字时,精度丢失的问题
但是double类型的只支持15-16位的精度,但是我们数据库的NODE字段却是19位,所以后三位的数字发生了精度丢失。猜测是qt底层的代码有问题导致的。刚开始以为是类型转换的问题,后来发现QSqlQuery::value()这个成员是QVariant类型的。但是数据库的字段一开始设计好后,后续修改牵一发而动全身,如果项目复杂且庞大,建议采用2方法。使用Qt的QSqlQuery从数据库读取该数字时,总是发生数据精度丢失的错误。数据库中存在一个字段NODE,该字段的类型是:NUMERIC(20,0)。
2024-08-20 17:11:32
270
原创 关于将char数组赋值给string时候的一个小坑
但是这里有一个小坑就是这种写法默认char数组a是以'\0'结尾的,即空字符。这时候直接将a赋值给b是没有问题的,但是如果a的结尾没有'\0',就会导致b出现错误。可以理解为这个赋值过程是将a的字符串从第一个开始遍历一个个给b,遇到'\0'结束。这里以一个结构体包含了两个char数组成员,a和b在地址上是相连的,方便看溢出时读取的数据。用strncpy将d复制给a时,故意将d的数组长度设置比a大,为的就是不将'\0'复制给a。结果是:0x80fcb0 0x80fcb5。中间差的刚好是a数组的大小。
2024-08-16 10:46:28
900
原创 关于编译时时常出现的报错:对‘xxx’未定义的引用解决办法
需要注意的是在工程中,对一个全局变量的使用不会局限在一个文件中,但是如果在多个文件中都进行定义了,那么就会编译时报错:xxx的多重定义。这时解决办法就是删除多余的定义,仅仅保留一个文件中的定义就可以了。或者你可以偷点懒,创建一个cpp文件,专门把工程里所有的全局变量都在这里面进行一次定义,然后你就可以在任何地方快乐的使用它们了。注意:这里这两句代码的作用并不是对test,test2进行定义而是声明,因为使用了extern进行修饰。在这个源文件中,一开始对这两个变量进行了定义,之后就可以对其进行任意操作了。
2024-08-05 20:40:29
1116
1
原创 C++ 从string中匹配到某个中文字符,并获取其下标
将包含字母,符号,中文等的string转换为vector在vecA中匹配vecB 并返回下标。
2024-01-29 20:52:22
983
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人