c/c++编程
文章平均质量分 71
G_BrightBoy
爱计算机技术,爱互联网,爱唱歌,爱运动,……
展开
-
linux-使用互斥锁完成多进程同步
#include #include #include #include #include #include #include int main(void){//2转载 2011-10-12 13:08:29 · 13023 阅读 · 0 评论 -
动态内存管理详解:malloc/free/new/delete/brk/mmap(介绍的很明白)
笔试遇到的问题:自己模模糊糊,说不上来。这个介绍的很清晰明了。 c++ 内存获取和释放 new/delete,new[]/delete[]c 内存获取和释放 malloc/free, calloc/realloc上述8个函数/操作符是c/c++语言里常用来做动态内存的申请和释放的,要理解这些接口,大概需要下面几个维度的了解:1. 了解OS的进程空间模型,一个进程的地址空间,转载 2014-04-02 13:30:56 · 6379 阅读 · 0 评论 -
C 语言的可变参数表函数的设计及原理 - printf(const char* format, ...)
首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理。一、printf函数的实现原理在C/C++中,对函数参数的扫描是从后向前的。C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出来,在计算机的内存中,数据有2块,一块是堆,一块是栈(函数参数及局部变量在这里),而栈是从内存的高地址向低地原创 2014-01-03 10:50:19 · 2325 阅读 · 2 评论 -
使用libpcap分析网络报文
最近要对tcpdump抓到的报文进行分析,开始的时候用wireshark的命令行工具tshark把分析的结果保存成文本文件然后再用正则表达式匹配需要的字段,这样好处是不用自己分析协议,只要抓取需要的字段就行了,缺点是相当地慢,330M的tcpdump文件经过tshark处理后得到转载 2011-09-29 10:22:34 · 5553 阅读 · 0 评论 -
vim插件taglist的安装和使用
【功能】 a source code browser(supports C/C++, java, perl, python, tcl, sql, php, etc): 提供了源码的结构化浏览功能,可将源码中定义的类、函数、变量等以树结构显示,层次关系可一目了然,而且于快速定位并查看。【下载安装】 taglist插件是以vim脚本的形式存在,因此只需要将其下载原创 2013-11-20 14:36:41 · 30397 阅读 · 2 评论 -
vim插件ctags的安装和使用
· ctags功能: 为源码的变量/对象、结构体/类、函数/接口、宏等产生索引文件,以便快速定位。目前支持41种语言,这里仅以C/C++为例:ctags可以产生c/c++语言所有类型的索引文件,具体如下:================================================================================= ->原创 2013-11-19 20:47:27 · 85612 阅读 · 5 评论 -
常用socket函数详解
常用socket函数详解关于socket函数,每个的意义和基本功能都知道,但每次使用都会去百度,参数到底是什么,返回值代表什么意义,就是说用的少,也记得不够精确。每次都查半天,经常烦恼于此。索性都弄得清楚、通透,并记录下来,一来便于自己记忆,再者以防日后查阅、回顾。 主要介绍:socket、bind、listen、connect、accept、send、sendto、recv、recv原创 2013-10-18 15:09:27 · 47175 阅读 · 2 评论 -
非阻塞的connect函数和select函数
connect 函数的调用涉及到TCP连接的三次握手过程,通常阻塞的connect 函数会等待三次握手成功或失败后返回,0成功,-1失败。如果对方未响应,要隔6s,重发尝试,可能要等待75s的尝试并最终返回超时,才得知连接失败。即使是一次尝试成功,也会等待几毫秒到几秒的时间,如果此期间有其他事务要处理,则会白白浪费时间,而用非阻塞的connect 则可以做到并行,提高效率。原创 2013-04-25 14:43:04 · 8363 阅读 · 0 评论 -
UNIX网络编程之close函数和shutdown函数的区别
1 函数基本特征(1)close缺省功能是将套接字作“已关闭”标记,并立即返回到调用进程,该套接字描述符不能再为该进程所用:即不能作为read和write(send和recv)的参数,但是TCP将试着发送发送缓冲区内已排队待发的数据,然后按正常的TCP连接终止序列进行操作(断开连接4次握手-以FIN为首的4个TCP分节)。(2)shutdown有两个参数,该函数的行为依赖于howto的值:原创 2013-04-10 09:47:29 · 1810 阅读 · 0 评论 -
string类构造、拷贝构造、赋值、操作符函数实现及注意事项
通过对string类构造、拷贝构造、赋值、操作符函数的实现及调试,可以更加深刻的认识在创建或修改对象内容时的调用关系。下面是简单的实现:Mystr类:class Mystr{public: Mystr(void); Mystr(const char *str)原创 2011-10-03 14:58:44 · 1952 阅读 · 0 评论 -
关于内存中的数据对齐
概念:数据对齐指的是,数据所在的内存地址必须是该数据长度的整数倍。比如在32位机中int 所在的内存起始地址能被4整除,short可以被2正处,double被8整除。为什么要进行数据对齐?x86CPU能直接访问对齐的数据,当它试图访问一个未对齐的数据时,会在内部进行一原创 2011-10-02 19:35:36 · 1426 阅读 · 0 评论 -
vim之AutoComplPop和OmniCppComplete的安装和使用
在coding过程中,有了变量或函数的自动弹出功能,可以极大的提高编码的效率和准确率,这里介绍的AutoComplPop和OmniCppComplete脚本插件就是实现这样一个功能。1. 代码(普通变量函数)的自动弹出 AutoComplPop下载:http://www.vim.org/scripts/script.php?script_id=1879安装:先解压:unzi原创 2014-02-19 20:10:13 · 31160 阅读 · 10 评论