c/c++
purple尘
这个作者很懒,什么都没留下…
展开
-
一个makefile编译多个可执行文件
makefile中默认不能定义同名函数,所以一个Makefile想产出两个可执行bin默认是不可以的原创 2020-10-12 11:04:23 · 1374 阅读 · 0 评论 -
VIRT和RES
VIRT:进程所有内存;注意这里包括了申请但是还没使用的,比如:step1:// arr_size=10void alloc(char** p, int arr_size) { for (int i = 0; i < arr_size; i++) { int size = 1024*1024*1024; p[i] = (char*)malloc(size); if (p[i] == NULL) { cout<<"malloc failed原创 2020-08-05 12:22:48 · 4460 阅读 · 0 评论 -
ssh远程卡主问题
命令后面加上:0</dev/null 1>/dev/null 2>/dev/null原创 2020-07-21 21:21:08 · 365 阅读 · 0 评论 -
ctags为指定语言添加扫描的文件后缀
ctags --langmap=[语言]:+[后缀] -R如:alias cctags='ctags --langmap=C++:+.inl --langmap=C++:+.INL -R'原创 2020-07-21 15:06:49 · 659 阅读 · 0 评论 -
高版本gcc编译,低版本gdb无法调试,且pstack为空
原因是gcc和gdb的版本不兼容,常见错误:Dwarf Error: wrong version in compilation unit header (is 0, should be 2, 3, or 4) [in module /docker/opt/lianghanbing02_dev/local/nebula/bin/nebula-storaged]两个解决方法:1.gcc迎合低版本gdb,编译的时候生成低版本gdb可用的调试信息:-gdwarf-2(生成dwarf version.原创 2020-07-10 12:02:08 · 1792 阅读 · 0 评论 -
让cmake在编译过程中打印编印信息
方法1:执行命令cmake时追加:-DCMAKE_VERBOSE_MAKEFILE=ON方法2:在CMakeLists.txt中添加:set(CMAKE_VERBOSE_MAKEFILEON ON)方法3:make时追加:VERBOSE=1推荐方法1或2原创 2020-07-09 22:41:50 · 19489 阅读 · 3 评论 -
const STL容器初始化方法
1. 写一个函数返回生成结果;2. c++98使用array方式初始化;3. c++11可使用{...}方法初始化原创 2020-01-21 11:34:46 · 324 阅读 · 0 评论 -
tcmalloc介绍
官网传送门:http://goog-perftools.sourceforge.net/doc/tcmalloc.html转载 2018-02-09 16:36:27 · 581 阅读 · 0 评论 -
应用 Valgrind 发现 Linux 程序的内存问题
转自:https://www.ibm.com/developerworks/cn/linux/l-cn-valgrind/补充:可以使用--leak-check=full打印内存泄露的详情并可关联到具体的代码行。应用 Valgrind 发现 Linux 程序的内存问题Valgrind 概述体系结构Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由转载 2018-01-18 15:50:08 · 242 阅读 · 0 评论 -
GDB下查看内存命令(x命令)
转自:http://blog.csdn.net/allenlinrui/article/details/5964046可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示: x/ n、f、u是可选的参数。 n是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元的转载 2018-01-23 11:49:32 · 247 阅读 · 0 评论 -
x86-64 下函数调用及栈帧原理
转自:http://blog.csdn.net/lqt641/article/details/73002566缘起在 C/C++ 程序中,函数调用是十分常见的操作。那么,这一操作的底层原理是怎样的?编译器帮我们做了哪些操作?CPU 中各寄存器及内存堆栈在函数调用时是如何被使用的?栈帧的创建和恢复是如何完成的?针对上述问题,本本文进行了探索和研究。通用寄存器使转载 2018-01-23 10:59:13 · 966 阅读 · 1 评论 -
使用 gdb 恢复堆栈信息
转自:https://www.jianshu.com/p/088fb171cd40用 C/C++ 编写的程序, 如果遇到 Segmentation Fault 则可以通过生成 coredump 来进行调试, 根据记录的信息定位到出错代码行. 但很多时候可能用 gdb 打开 coredump 文件查看堆栈时, 却出现一堆问号, 无法直接定位到出错代码行. 本文介绍另一种方法来还原错乱转载 2018-01-23 10:44:01 · 699 阅读 · 0 评论 -
strace 运维故障解析:C++库问题导致LAMP运行异常,Floating Point Exception
转自:http://blog.51cto.com/liuqunying/16244230x01 前言: 今天收到同事RTX消息,反应开发机器PHP无法执行异常,报Floating point exception。第一次碰到这种怪问题,第一反应先查下这个报错是怎么回事?一查,搜到的结果是: 同一个程序在一台高版本Linux上运行时没有问题,而在另转载 2017-12-13 17:58:38 · 1052 阅读 · 0 评论 -
Linux性能评测工具之一:gprof篇
转自:http://blog.csdn.net/stanjiang2010/article/details/5655143 这些天自己试着对项目作一些压力测试和性能优化,也对用过的测试工具作一些总结,并把相关的资料作一个汇总,以便以后信手拈来! 1 简介改进应用程序的性能是一项非常耗时耗力的工作,但是究竟程序中是哪些函数消耗掉了大转载 2017-12-01 15:02:55 · 259 阅读 · 0 评论 -
C++中的内联函数inline总结
转自:http://blog.csdn.net/coder_xia/article/details/6723387 突然看到C++Primer中讲到,对于vector的一个循环,调用语句:(示例代码i=v.begin()不是很规范,虽然不会出错,客官请将就着看)[cpp] view plain copyfor (转载 2017-10-09 18:02:20 · 233 阅读 · 0 评论 -
[简单明了]c c++ getopt函数
转自:http://speakingbaicai.blog.51cto.com/5667326/1074671/*原型:int getopt(int argc, char * const argv[], const char *optstring); 四个全局变量:extern char *optarg; //指向选项的参数的指针。ext转载 2017-07-28 20:55:28 · 776 阅读 · 0 评论 -
C++中宏##(两个井号)和#(一个井号)用法
间接转载,原地址不详。C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关 于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define W转载 2016-08-09 15:46:41 · 1354 阅读 · 0 评论 -
__builtin_expect 说明
转自:https://www.jianshu.com/p/2684613a300f,另外“!!”是将非bool值转化为bool值。这个指令是gcc引入的,作用是允许程序员将最有可能执行的分支告诉编译器。这个指令的写法为:__builtin_expect(EXP, N)。意思是:EXP==N的概率很大。一般的使用方法是将__builtin_expect指令封装为likely和unlikely宏。这两...转载 2018-02-23 10:37:28 · 405 阅读 · 0 评论 -
linux下C语言如何得到调用我的函数的文件名和行号
转自:http://www.voidcn.com/article/p-ruuoijoc-mn.html之前有看到一篇帖子,帖子内容如下:/*******************************原文************************/引自:http://bbs.csdn.net/topics/370006942 linux系统下C语言写了一个函数,我想在这个函数里面打印出调用这...转载 2018-03-02 10:31:43 · 2391 阅读 · 0 评论 -
输出并解析C++的调用堆栈
转自:https://www.mawenbao.com/research/glibc-backtrace-parsing.html本文简要介绍在Linux上输出和解析C++的call stack的方法。开发环境:* 编译器: gcc 4.8.2* 操作系统: Ubuntu 14.04 x86_64输出调用堆栈glibc中提供了backtrace()和backtrace_symbols()两个函...转载 2018-03-02 11:46:07 · 2181 阅读 · 0 评论 -
#pragma once与 #ifndef的区别
转自:http://www.cppblog.com/szhoftuncun/archive/2007/10/28/35356.html为了避免同一个文件被include多次1#ifndef方式2#pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。方式一: #ifndef __SOMEFILE_...转载 2019-05-29 10:26:23 · 204 阅读 · 0 评论 -
GCC在C语言中内嵌汇编 asm __volatile__
转自:https://blog.csdn.net/pbymw8iwm/article/details/8227839在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。1、简单的内嵌汇编例: ...转载 2018-08-23 15:06:20 · 820 阅读 · 0 评论 -
Makefile特殊规则
转自:https://blog.csdn.net/gracioushe/article/details/5914141Makefile特殊规则9/23/2009 10:54:15 PMhttp://blog.163.com/freeghost@yeah/blog/static/12319996120097913650383/Managing Projects with GNU Ma...转载 2018-08-22 21:12:02 · 455 阅读 · 0 评论 -
__THROW是什么东西
linux下直接看源码就行。转自:https://blog.csdn.net/lanmanck/article/details/6856168__THROW是什么东西?很多头文件里面对函数的声明后面都跟一个这东西,查了一下,有这么个文章说的清楚,转来看看。Linux/FreeBSD内核的源文件里常会出现这个东东。其实并不复杂,只是简单的宏定义,可以参考以下代码<sys/cdefs.h>...转载 2018-06-27 14:10:37 · 3682 阅读 · 0 评论 -
面向对象的三大基本特性,五大基本原则
转自:https://www.jianshu.com/p/50999d81eeb5透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础.三大特性是:封装,继承,多态特征图封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承面向对象编程 (OOP) 语言...转载 2018-06-14 16:07:02 · 515 阅读 · 1 评论 -
STL源码
linux下直接看这里:/usr/include/c++/4...原创 2018-06-04 16:36:06 · 1016 阅读 · 0 评论 -
gcc “-I”(大写i),“-L”(大写l),“-l”(小写l)的区别
转自:http://www.cnblogs.com/biglucky/p/4034923.html我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:例:gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld上面这句表示在编译hello.c时:-I /...转载 2018-05-16 15:32:14 · 3050 阅读 · 1 评论 -
wget 默认文件名附加URL查询部分的去除
转自:https://blog.lilydjwg.me/posts/21910.html拿wget下文件,它总是把URL的查询部分(?q=test这种)附加到默认的文件名后,让人十分不爽。查了man手册,也Google过,结论是没有办法解决。虽说拿shell写个脚本在下载完之后把这种尾巴也不难,但总觉得应该从根本上解决问题。于是就hack源码了。要改的地方其实很好找,在url.c的第1556行附近...转载 2018-05-03 15:21:37 · 1402 阅读 · 0 评论 -
学习linux内核,都看哪些书?
1. 了解操作系统基本概念。如果不会,可以学习《操作系统:设计与实现》Andrew S.Tanenbaum 写的那本。以MINIX为例子讲解操作系统的概念。非常推荐。2. 有了操作系统的基本概念以后,可以了解Linux的机制了。推荐《Linux内核设计与实现》Robert Love 写的。这本书从概念上讲解了Linux有什么,他们是怎么运行的。这本书要反复认真看透。3. 有了Linux内核的了解,...转载 2018-05-02 23:13:40 · 3932 阅读 · 0 评论 -
[坑死老子了]C++ string中的几个小陷阱,你掉进过吗?
转自:http://www.cnblogs.com/lanxuezaipiao/p/3704578.htmlC++开发的项目难免会用到STL的string,使用管理都比char数组(指针)方便的多,但在得心应手的使用过程中也要警惕几个小陷阱,避免我们项目出bug却迟迟找不到原因。1. 结构体中的string赋值问题直接通过一个例子说明,下面的例转载 2017-07-30 17:45:02 · 2075 阅读 · 0 评论 -
php运行原理
传送门:http://blog.jobbole.com/94475http://blog.csdn.net/phpkernel/article/details/5714302其余的看源码就行了。原创 2017-07-20 17:43:21 · 385 阅读 · 0 评论 -
cpp代码注释
/* FIXME */原创 2016-07-15 15:26:59 · 1197 阅读 · 0 评论 -
c/c++ 变量名前面加井号#
#把宏参数变成一个字符串。eg:#include#define ABC(str1, str2) \ char outstr1[100] = #str1; \ char outstr2[100] = #str2;int main() { ABC(thisisstr1, thisisstr2); printf("outstr1=%s, outstr2=%s原创 2016-07-13 13:23:52 · 4097 阅读 · 0 评论 -
gethostname
#include#include //使用此头文件int main() { char host[200]; gethostname(host, sizeof(host)); printf("gethostname:%s\n", host);}原创 2016-07-11 18:40:49 · 971 阅读 · 1 评论 -
unsigned long的一点应用
#includeint main() { unsigned long a=~0UL; //0为unsigned long类型,并且每位取反,下同。运行下试试~,把%lu改为%ld再试试~ unsigned long b=1UL; unsigned long c=1UL<<16; unsigned long d=1UL<<24; printf("a=%原创 2016-06-28 20:52:45 · 1279 阅读 · 0 评论 -
typedef的作用
看了一些,感觉下面这个说的还在理:1、增加代码的可读性,这一点显而易见。2、在后期维护和修改中比较方便:比如说:在定义很多数据为int型后,并且这种类型的数据在工程中被广泛的定义,但是在后 期维护或修改中需要将这些数据的类型改成float型,很显然,如果你要一个一个的去修改,那将会是一个很庞大的任务,但是如果你之前用typedef int sometype重定义了,并且用s转载 2016-06-28 20:34:18 · 557 阅读 · 0 评论 -
c语言time_t和struct tm
连接:http://www.360doc.com/content/10/0227/16/799_17008892.shtml转载 2016-06-27 13:05:46 · 524 阅读 · 0 评论 -
g++命令行详解
间接转自:http://blog.sina.com.cn/s/blog_5d2f00160100eh8s.htmlgcc/g++参数详解(转载)[介绍]gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步1.预处理,生成.i的文件[预处理器cpp]2.将预处理后的文件不转换成汇编语言,生成文件转载 2016-02-24 15:33:59 · 9809 阅读 · 0 评论 -
C语言printf怎么折行
Ans:直接用单个'\'既可,如下:printf("nihao\ya");原创 2016-02-23 19:44:26 · 1164 阅读 · 0 评论 -
C++的time_t 和 struct tm 类型【s
转自:http://blog.csdn.net/love_gaohz/article/details/6637625c++ 时间类型详解 time_tUnix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。转载 2016-02-23 16:25:50 · 2365 阅读 · 0 评论