![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
文章平均质量分 71
arcslee
这个作者很懒,什么都没留下…
展开
-
sizeof 与 #pragma pack(n)
今天在rukia的空间看到关于 sizeof 和 #pragma pack(n) 的文章,发现自己在这一方面上没有弄懂。有这个必要把它完全搞明白。所以就到网上看了一些文章,自己也做了一些测试。以下是我的心得。以下都是在32位的PC上 VC6.0 上得到。 sizeof 是用来求一个变量或一种类型占用多少个Byte. (32位PC) sizeof(bool) = 1 sizeof(cha转载 2013-04-23 10:03:31 · 873 阅读 · 0 评论 -
线程与进程
一.定义关于进程、轻量级进程、线程、用户线程、内核线程的定义,这个很容易找到,但是看完之后你可以说你懂了,但实际上你真的明白了么?在现代操作系统中,进程支持多线程。进程是资源管理的最小单元;而线程是程序执行的最小单元。一个进程的组成实体可以分为两大部分:线程集合和资源集合。进程中的线程是动态的对象;代表了进程指令的执行。资源,包括地址空间、打开的文件、用户信息等等,由进程内的线程共转载 2013-06-28 13:51:52 · 762 阅读 · 0 评论 -
select,epoll,poll比较
selectselect本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:1 单个进程可监视的fd数量被限制2 需要维护一个用来存放大量fd的数据结构,这样会使得用户空间和内核空间在传递该结构时复制开销大3 对socket进行扫描时是线性扫描pollpoll本质上和select没有区转载 2013-06-27 08:40:26 · 541 阅读 · 0 评论 -
使用Gnu gprof进行Linux平台下的程序分析
Gprof功能:打印出程序运行中各个函数消耗的时间,可以帮助程序员找出众多函数中耗时最多的函数。产生程序运行时候的函数调用关系,包括调用次数,可以帮助程序员分析程序的运行流程。有了函数的调用关系,这会让开发人员大大提高工作效率,不用费心地去一点点找出程序的运行流程,这对小程序来说可能效果不是很明显,但对于有几万,几十万代码量的工程来说,效率是毋庸置疑的!而且这个功能对于维护旧代码或者是分析Op转载 2013-05-29 15:52:57 · 610 阅读 · 0 评论 -
Shell中的数组
一、数组和字符串Array[3] = "a b c" echo $Array[1] 输出b,str=“a b c” Array = ($str) echo${Array[1]},同样输出b,要注意: Array = ($str)中的右值的括号不能缺上面这个就是我们常说的把字符串放到一个数组中,也可以理解为动态数组,比C和C++简单多了计算字符串长度可用的三种方法:echo “转载 2013-05-12 23:23:27 · 537 阅读 · 0 评论 -
内存泄露检测工具比较
1. ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。 2. Dmalloc-Debug Malloc Library.3. Electric Fence-Linux分发版中由Bruce Perens编写的malloc()调试库。 4. Leaky-Linux下检测内存泄漏的程序。转载 2013-05-08 16:44:18 · 903 阅读 · 0 评论 -
结构体成员的内存分布与对齐
我们先看一道IBM和微软的笔试题:IBM笔试题:struct{ short a1;short a2; short a3; }A; struct{ long a1; short a2; }B; sizeof( A)=6, sizeof(B)=8,为什么? 注:sizeof(short)=2,sizeof(lo转载 2013-05-03 10:47:40 · 597 阅读 · 0 评论 -
offsetof解析
linux下/usr/include/slang.h对offsetof这个宏定义如下:# define offsetof(T,F) ((unsigned int)((char *)&((T *)0L)->F - (char *)0L))(T*)0L是骗编译器说有一个指向结构体type的指针,地址值是0。->优先级比&高,&((T*)->0L)->F是取成员F的地址,至于char*强原创 2013-05-02 21:17:22 · 528 阅读 · 0 评论 -
strcpy考虑重叠
考虑了内存重叠的字符串复制函数char * strcpy(char *dest, char *src){char *d = dest; //backup inputchar *s = src;int count = 0;assert(dest); //非空指针检查assert(src);if(src == dest)retur转载 2013-05-15 15:39:38 · 621 阅读 · 0 评论 -
寄存器与存储器的区别
存储器在CPU外,一般指硬盘,U盘等可以在切断电源后保存资料的设备,容量一般比较大,缺点是读写速度都很慢,普通的机械硬盘读写速度一般是50MB/S左右。内存和寄存器就是为了解决存储器读写速度慢而产生的多级存储机制,从20世纪50年代开始,磁芯存储器曾一度成为主存的主要存储介质,但从20世纪70年代开始,逐步被半导体存储器所取代,目前的计算机都是用半导体存储器。现在的DDR2内存的读写速度一般为原创 2013-04-18 17:23:31 · 666 阅读 · 0 评论 -
C语言中关键字auto、static、register、const、volatile、ex...
这些关键词都是c++基础知识,我整理了一下,希望对新学的朋友们有用: (1)auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 (2)register 这个关键字命令编译器尽可能的将变量存原创 2013-04-18 17:23:29 · 586 阅读 · 0 评论 -
Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量
对所有用户有效在/etc/profile增加以下内容。只对当前用户有效在Home目录下的.bashrc或.bash_profile里增加下面的内容:(注意:等号前面不要加空格,否则可能出现 command not found)#在PATH中找到可执行文件程序的路径。export PATH =$PATH:$HOME/bin#gcc找到头文件的路径C_INCLUDE_P转载 2013-04-26 14:34:15 · 645 阅读 · 0 评论 -
scanf \n
可能令人吃惊,\n在scanf格式串中不表示等待换行符,而是读取并放弃连续的空白字符。(事实上,scanf格式串中的任何空白字符都表示读取并放弃空白字符。而且,诸如%d这样的格式也会扔掉前边的空白,因此你通常根本不需要在scanf格式串中加入显式的空白。)因此,"%d\n"中的\n会让scanf读到非空白字符为止,而它可能需要读到下一行才能找到这个非空白字符。这种情况下,去掉\n仅仅使用"%d"即原创 2013-04-25 17:22:55 · 855 阅读 · 0 评论 -
exit、return、_exit、_Exit这几个函数的区别
1、exit函数和return函数的主要区别是:1)exit用于在程序运行的过程中随时结束程序,其参数是返回给OS的。也可以这么讲:exit函数是退出应用程序,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息。main函数结束时也会隐式地调用exit函数,exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭转载 2013-04-25 15:25:07 · 642 阅读 · 0 评论 -
程序编译后运行时的内存分配
一、编译时与运行时的内存情况1.编译时不分配内存编译时是不分配内存的。此时只是根据声明时的类型进行占位,到以后程序执行时分配内存才会正确。所以声明是给编译器看的,聪明的编译器能根据声明帮你识别错误。2.运行时必分配内存运行时程序是必须调到“内存”的。因为CPU(其中有多个寄存器)只与内存打交道的。程序在进入实际内存之前要首先分配物理内存。3.编译过程只能简单说一下,因为如果转载 2013-04-24 14:32:20 · 881 阅读 · 0 评论 -
linux查看系统性能常用命令
vmstat结果内容的解释Vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo转载 2013-04-24 18:10:31 · 588 阅读 · 0 评论 -
函数调用的几种方式
(VC编译器下) 1. CALLBACK,WINAPI和AFXAPI到底是什么?它们分别在什么地方被定义的?在头文件windef.h中,CALLBACK, WINAPI, APIENTRY……#define CALLBACK __stdcall#define WINAPI __stdcall#define WINAPIV __cdecl转载 2013-04-24 10:04:05 · 969 阅读 · 0 评论 -
w+与r+等的区别
r+: Open for reading and writing. The stream is positioned at the beginning of the file.w+:Open for reading and writing. The file is created if it does not exist, otherwise it is truncated转载 2013-08-06 10:15:20 · 2025 阅读 · 0 评论