自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ciengwu的专栏

分解 循序 渐进

  • 博客(11)
  • 收藏
  • 关注

原创 C++悬空指针造成的崩溃问题排查及解决

出现崩溃问题后,使用gdb打印崩溃时的堆栈,发现崩溃在p->func()附近,即在刚进入func()里面崩溃的,那么此时很可能是由于p已经被释放掉了。若在p->func()调用时,p打印出来的值与所析构的对象地址一样,且先析构,后调用的p->func(),为验证或排查此问题,可在p->func()调用之前,将p的值打印出来,然后再将p指向的对象的析构函数处加上打印,打出当前待析构的对象的地址。则说明造成崩溃是由于p已经被释放造成的。

2024-01-04 19:43:21 397 1

原创 Linux下无return造成的C++程序崩溃

在linux下运行编译好的C++程序时,发现必然崩溃在一个成员函数的入口处,且此成员函数所属的对象指针打印出来后地址异常,类似于0X00008之类的。在某个成员函数声明有返回值,实际实现时,函数体内部没有return,导致函数无法跳出,或直接跳到了一个未知的地方,出现调用堆栈错误。对有返回值得函数,一定要有return,如果编译未报错,或忽视了编译警告,将存在隐患。

2024-01-04 19:29:03 382 1

原创 cmd命令重定向

cmd命令重定向

2023-07-13 13:18:21 801 1

原创 win11 引用的账户当前已锁定,且可能无法登录

win11 引用的账户当前已锁定,且可能无法登录

2023-06-15 20:02:28 4972 1

原创 boost中cannot bind rvalue reference of type to lvalue of type问题

1.问题引出最近在新的环境上编译以前使用过boost的c++程序,发现对boost的相关调用部分报错了,而且报错发生在boost的内部的hpp文件中报错内容:cannot bind rvalue reference of type to lvalue of type通过实际查看boost报错部分的代码,发现报错部分的代码类似于这样:main.cpp:#include <stdio.h>template<typename T>void f1(const T&

2022-04-09 12:36:58 2954

原创 区分rtp和rtcp的简单

rtp与rtcp协议头比较类似,为将二者区分开来,只需要检查报文头部第二个字节的之是否为200~206(或更后)即可,若是,则可以肯定为rtcp报文而非rtp,因为若200~206在rtp的第二个字节上则去掉最高位的mark位,就变为了72~78。十进制 二进制 二进制 十进制200 11001000 &0x7f后01001000 72201 110010010100100

2017-09-18 21:41:38 3204

原创 条件变量的使用注意

linux下多线程编程时,随着主线程的结束,在整个进程结束时,仍然有正在运行的子线程,那么这些子线程也会一并结束(注意,主线程的结束并不会影响子线程的结束),但是当子线程中有条件变量正在wait时,会出现~condition_variable_any():Assertion '!pthread_mutex_destroy(&internal_mutex)' failed.的错误,大概意思是说互斥变

2017-09-18 21:12:11 680

原创 多线程访问同一函数

多个线程访问同一函数时,一般情况下是互不影响的,但是当函数中存在全局变量或是static静态变量时,各个线程会得到不确定的结果

2017-08-07 21:58:06 2215

原创 C程序崩溃的常见原因

写完的C程序在运行时,若弹出系统的异常提示框,则显示程序崩掉了,常见的原因有如下2点:1)内存越界具体的代码形式可为数组下标越界和指针移动越界,在操作一个数组或是指针之前,要明确其边界范围,不应访问不属于系统分配的内存区域。2)指针为空即此时通过指针访问的内存地址为0,这个地址系统是不允许访问的,系统也不会分配地址为0的内存给程序,这属于一种特殊的内存越界行为。空指针常见于

2017-08-07 21:42:58 8071

原创 使用volatile

多线程在通过全局变量进行通信时,此全局变量应该声明为volatile类型,若不这样做,很有可能debug能正常运行,但是release版不会按照程序的本意运行,因为release版会做一些优化,有些变量并不会及时地写入内存中,而是会一直存在于寄存器中,这样其它需要读取此变量值得线程就不会得到最新的变量的,从而导致这样的全局变量起不到通信的作用。

2017-08-07 20:54:35 151

原创 extern略记

C/C++中extern关键字有三处用法:1)extern "C":声明之后的函数为C语言函数,而非C++函数,用于C/C++混用的程序中;例1:extern "C"{//编译器在翻译以下两个函数名时会按照C语言的方式进行,以便在链接时能够找到对应的C函数void fun1(int a);void fun2(char c);}2)extern 变量:即告

2017-05-21 20:18:06 187

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除