C
piaopiaopiaopiaopiao
这个作者很懒,什么都没留下…
展开
-
Linux下C/C++开发神器CLion
CLion可以方便的在Linux系统下进行可视化的调试,编码下载地址:https://www.jetbrains.com/clion/download/相关文献链接:https://blog.csdn.net/zwx19921215/article/details/83306119原创 2021-08-21 09:40:10 · 338 阅读 · 1 评论 -
C函数调用关系可视化
可以将以图形形式查看应用程序的调用过程看作是一个学习经历。这样做可以帮助您理解应用程序的内部行为,并获得有关程序优化方面的信息。例如,通过对那些经常调用的函数进行优化,您就可以用最少的努力来获得最佳的性能。另外,调用跟踪还可以判断用户函数的最大调用深度,这可以用来对调用栈使用的内存进行有效限制(在嵌入式系统中,这是非常重要的一个考虑因素)。为了捕获并显示调用图,您需要 4 个元素:GNU 编译...转载 2020-04-28 17:07:20 · 2191 阅读 · 0 评论 -
const 与重载
const到底是不是一个重载的参考对象,请看下面的例子class A{public: void f(int i){ std::cout<<"1";}; //函数1 void f(int i) const { std::cout<<"2" ;};//函数2};这个地方的重载是没有问题的,说明const 修饰函数能够区分重载class B{...转载 2020-02-23 15:08:01 · 426 阅读 · 0 评论 -
int const*与int * const
1. int const*int const *p与const int *p意义一样。从右往左看,进行解析,这个p是个指针,而且是个常量,类型是整型。可称为指针常量特点:*p指向一个整型的常量,但是不能通过修改p所指向内存单元的值,只能修改所指向的对象,或者通过改该对象的值。such as: int a = 10; int b = 20; int c =...转载 2020-02-23 09:59:40 · 145 阅读 · 0 评论 -
理解CAS与__sync_bool_compare_and_swap
CAS是compare and swap,简单来说就是,在写入新值之前, 读出旧值, 当且仅当旧值与存储中的当前值一致时,才把新值写入存储。__sync_bool_compare_and_swap是可供程序员调用的接口, 为什么需要CAS呢? 一起来看下:让10个线程执行加法操作, 看看最简单的版本:#include <stdio.h>#includ...转载 2020-02-20 11:38:04 · 765 阅读 · 0 评论 -
套接字(socket)编程简单实现server-client聊天程序
1、socket在TCP/IP协议中,一个IP地址标识网络通讯中唯一一台主机,而一个IP地址+一个TCP(或UDP)端口号就可以标识网络通讯中的一个进程,此时的IP地址+端口号即称为socket。内存中的多字节数据相对于内存地址有大小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大小端之分,网络数据流同样也有大小端之分:先发出的数据是低地址,后发出的数据是搞地...转载 2020-01-07 16:35:33 · 778 阅读 · 0 评论 -
C/C++文件读写小程序
#include <vector>#include <iostream>#include <fstream>#include <boost/algorithm/string/split.hpp>#include <boost/algorithm/string/classification.hpp>using namesp...原创 2019-06-28 14:37:34 · 159 阅读 · 0 评论 -
用gdb分析linux死锁
本文转自:https://blog.csdn.net/zhang2531/article/details/52085731简介死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。 由于资源占用是互斥...转载 2019-04-28 16:48:52 · 276 阅读 · 0 评论 -
C/C++线程名字设置和查看
原文:https://blog.csdn.net/lijzheng/article/details/39963331今天跟同事讨论一个问题,谈到pthread_create创建线程之后,线程的名字直接从父进程继承下来,但这个名字对我们后续定位分析问题没有直接的帮助,如果能够修改线程的名称,那定位分析问题就比较方便了。linux下的prctl库自kernel 2.6.9后支持PR_SET_...转载 2019-03-18 19:33:03 · 5250 阅读 · 0 评论 -
ffmpeg读取本地视频,获取视频帧
本文转自:https://blog.csdn.net/yinsui1839/article/details/80519742/*********本代码参考自雷神博客 ***********/#ifdef __cplusplusextern "C"{#endif#include <libavcodec/avcodec.h>#include <libavfor...转载 2019-03-05 15:19:52 · 5133 阅读 · 0 评论 -
循环队列实现C/C++
文件circular_buffer.h#ifndef CIRCULAR_BUFFER_H_#define CIRCULAR_BUFFER_H_/// Opaque circular buffer structuretypedef struct circular_buf_t circular_buf_t;/// Handle type, the way users interact...转载 2019-02-26 11:03:20 · 310 阅读 · 0 评论 -
mtrace-内存使用追踪
本文转自:https://www.jianshu.com/p/d9e12b66096a1. 函数格式: #include <mcheck.h> void mtrace(void); void muntrace(void);mtrace 用于开启内存使用记录,muntrace用于取消内存使用记录。内存使用情况记录到一个文件,值由...转载 2019-03-01 16:34:45 · 1446 阅读 · 0 评论 -
互斥锁和条件变量的区别与应用
两个线程操作同一临界区时,通过互斥锁保护,若A线程已经加锁,B线程再加锁时候会被阻塞,直到A释放锁,B再获得锁运行,线程B必须不停的主动获得锁、检查条件、释放锁、再获得锁、再检查、再释放,一直到满足运行条件的时候才可以(而此过程中其他线程一直在等待该线程的结束),这种方式是比较消耗系统资源的。条件变量同样是阻塞,还需要通知才能唤醒,线程被唤醒后,它将重新检查判断条件是否满足,如果还不满足,该线程...原创 2019-02-25 10:09:38 · 2477 阅读 · 0 评论 -
json与C++结构体互转
1)x2struct原文: https://blog.csdn.net/xyz347/article/details/79338202代码:https://github.com/xyz347/x2struct2)struct2json原文:https://blog.csdn.net/arminkztl/article/details/49861223代码:https://...转载 2019-02-28 14:58:50 · 10171 阅读 · 1 评论 -
Linux C字符串替换函数实例详解
本文转自:http://www.jb51.net/article/104339.htm#include #include #include /**** @author: cnscn@163.com* @reference: lovesnow1314@http://community.csdn.net/Expert/TopicView3.asp?id=51982转载 2017-12-03 11:10:19 · 2374 阅读 · 0 评论 -
valgrind 工具介绍和简单的使用
本文转自:https://www.cnblogs.com/AndyStudy/p/6409287.html最近老是遇上各种奇奇怪怪的core dump,不太会分析的情况下看到了这款工具。在这记录分享下。Valgrind 是个开源的工具,功能很多。例如检查内存泄漏工具---memcheck。Valgrind 安装:去官网下载: http://valgrind.org/download...转载 2018-09-25 19:20:46 · 343 阅读 · 0 评论 -
gcc和g++的区别
本文转自:https://www.cnblogs.com/liushui-sky/p/7729838.html我们在编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作个了结,毕竟知识的目的是令人更清醒,而不是更糊涂...转载 2018-10-11 09:46:36 · 88 阅读 · 0 评论 -
gcc系强制链接静态库(同时有.so和.a)
本文转自:https://blog.csdn.net/youqika/article/details/546175251. 坑多的办法-static如果需要链接成不依赖任何so文件的程序,用ldd查看显示为"not a dynamic executable",但是这个选项时不推荐的。即使像这样链接(c++):“-static-libgcc -static-libstdc++ -st...转载 2018-10-11 10:06:04 · 1648 阅读 · 0 评论 -
Linux下利用Valgrind工具进行内存泄露检测和性能分析
本文转自:https://www.linuxidc.com/Linux/2012-06/63754.htmValgrind通常用来成分析程序性能及程序中的内存泄露错误 一 Valgrind工具集简绍Valgrind包含下列工具: 1、memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。 2、callgrind:检测程序代码的运行时间和调用过程,以及...转载 2018-09-27 09:56:55 · 173 阅读 · 0 评论 -
Linux下C++ 性能测试工具GPROF入门教程
本文转自:https://blog.csdn.net/luchengtao11/article/details/74910585一、前言参考GPROF用户数手册:http://sourceware.org/binutils/docs-2.17/gprof/index.html参考博客:http://blog.csdn.net/stanjiang2010/article/details/...转载 2018-09-27 14:25:27 · 1910 阅读 · 0 评论 -
valgrind的callgrind工具进行多线程性能分析
本文转自:https://www.cnblogs.com/zengkefu/p/5642991.html1.http://valgrind.org/downloads/old.html2.yum install valgrindValgrind的主要作者Julian Seward刚获得了今年的Google-O'Reilly开源大奖之一──Best Tool Maker。让我们一起来看...转载 2018-09-27 14:59:59 · 676 阅读 · 0 评论 -
Callgrind 使用 2
本文转自:https://www.cnblogs.com/zengkefu/p/5643449.htmlCallgrind是一款和gprof类似的性能分析工具,与gprof不同的是它不需要在编译源码时附加特殊选项,但推荐加上调试选项。Callgrind使用cachegrind的统计信息Ir(I cache reads,即一条指令执行的次数)来统计程序中函数的调用情况,建立函数调用关系图,还可以...转载 2018-09-27 15:01:02 · 408 阅读 · 0 评论 -
Linux ELF文件格式分析---objcopy命令的使用
本文转自:https://blog.csdn.net/xj178926426/article/details/73777611 Linux ELF文件格式分析—objcopy命令的使用最近在看《程序员的自我修养—链接、装载与库》一书,对书中提到的一个小问题,自己做了个试验验证一番,然后记录之。其具体问题如下: 如果我们将一个二进制文件,比如图片,MP3音乐,词典一类的东西作为目标文件的一段...转载 2018-10-31 16:27:23 · 667 阅读 · 0 评论 -
offsetof和container_of
本文转自:http://www.cnblogs.com/skywang12345/p/3562146.html前面一章"介绍双向链表并给出了C/C++/Java三种实现",本章继续对双向链表进行探讨,介绍的内容是Linux内核中双向链表的经典实现和用法。其中,也会涉及到Linux内核中非常常用的两个经典宏定义offsetof和container_of。内容包括:1. Linux中的两个经典宏...转载 2019-01-07 14:53:39 · 200 阅读 · 0 评论 -
gdb调试时,不按顺序执行,跳变
解决方法是编译时不使用优化选项。原创 2019-01-08 08:50:39 · 1548 阅读 · 0 评论 -
解决SourceInsight不能解析标准C函数问题
输入自定义函数时会代码提示输入标准C函数时没有提示解决方法 1、选项->参数选择->符号查找->产生普通项目->标准C/C++和Windows Headers Include 添加VC头文件路径:..\VS2010\VC\include创建一个包含头文件的工程如CStandard.PR2、选项->参数选择->符号查找->添加项目到目标将CStandard.PR添加进来转载 2016-06-26 10:31:08 · 4602 阅读 · 0 评论