
unix编程--c/c++
文章平均质量分 66
林伟
怪人一个!
展开
-
优化C语言代码(程序员必读)
1、选择合适的算法和数据结构 应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的效率。.选择一种合适的数据结构也很重要,比如你在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具原创 2010-01-23 15:23:00 · 1017 阅读 · 0 评论 -
brk和sbrk及内存分配函数相关
<br /><br />brk和sbrk主要的工作是实现虚拟内存到内存的映射.在GNUC中,内存分配是这样的:<br /> 每个进程可访问的虚拟内存空间为3G,但在程序编译时,不可能也没必要为程序分配这么大的空间,只分配并不大的数据段空间,程序中动态分配的空间就是从这 一块分配的。如果这块空间不够,malloc函数族(realloc,calloc等)就调用sbrk函数将数据段的下界移动,sbrk函数在内核的管理 下将虚拟地址空间映射到内存,供malloc函数使用。(参见linux内核情景分析)<原创 2010-06-03 10:29:00 · 1722 阅读 · 0 评论 -
内存调试技巧
本文将带您了解一些良好的和内存相关的编码实践,以将内存错误保持在控制范围内。内存错误是 C 和 C++ 编程的祸根:它们很普遍,认识其严重性已有二十多年,但始终没有彻底解决,它们可能严重影响应用程序,并且很少有开发团队对其制定明确的管理计划。但好消息是,它们并不怎么神秘。引言C 和 C++ 程序中的内存错误非常有害:它们很常见,并且可能导致严重的后果。来自计算机应急响应小组(请参见参考原创 2010-05-31 10:42:00 · 1817 阅读 · 3 评论 -
C 语言中的指针和内存泄漏
在使用 C 语言时,您是否对花时间调试指针和内存泄漏问题感到厌倦?如果是这样,那么本文就适合您。您将了解可能导致内存破坏的指针操作类型,您还将研究一些场景,了解要在使用动态内存分配时考虑什么问题。引言对于任何使用 C 语言的人,如果问他们 C 语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏。这些的确是消耗了开发人员大多数调试时间的事项。指针和内存泄漏对某些开发人员来说似乎原创 2010-05-31 10:36:00 · 1343 阅读 · 1 评论 -
标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转载
C 风格(C-style)强制转型如下:(T) exdivssion // cast exdivssion to be of type T函数风格(Function-style)强制转型使用这样的语法:T(exdivssion) // cast exdivssion to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种原创 2010-05-25 15:59:00 · 1323 阅读 · 0 评论 -
static_cast、dynamic_cast、reinterpret_cast和const_cast之间的区别
C-style cast举例: int i; double d; i = (int) d; 上面的代码就是本来为double类型的d,通过(int)d将其转换成整形值,并将该值赋给整形变量i (注意d本身的值并没有发生改变)。这就是典型的c-style类型转换。 下面是一个简单的程序:#include using namespace std; int原创 2010-05-25 15:54:00 · 950 阅读 · 0 评论 -
dlopen中几个flag的区别
dlopen中几个flag的区别:RTLD_LAZY RTLD_NOW RTLD_GLOBAL void *dlopen(const char *filename, int flag);其中flag有:RTLD_LAZY RTLD_NOW RTLD_GLOBAL,其含义分别为:1、RTLD_LAZY:在dlopen返回前,对于动态库中存在的未定义的变量(如原创 2010-05-13 17:56:00 · 1243 阅读 · 0 评论 -
ulimit和setrlimit轻松修改task进程资源上限值
在linux系统中,Resouce limit指在一个进程的执行过程中,它所能得到的资源的限制,比如进程的core file的最大值,虚拟内存的最大值等。Resouce limit的大小可以直接影响进程的执行状况。其有两个最重要的概念:soft limit 和 hard limit。struct rlimit { rlim_t rlim_cur; /* Soft lim原创 2010-04-07 09:01:00 · 3011 阅读 · 0 评论 -
exit、 _exit、 atexit区别
很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就 是用atexit()函数来注册程序正常终止时要被调用的函转载 2010-03-10 17:03:00 · 1811 阅读 · 0 评论 -
linux 动态加载 动态链接库
动态库的显式调用显式调用的含义是代码出现库文件名,用户需要自己去打开和管理库文件。其要点为:⑴把dlfcn.h系统头文件包含进来⑵用dlopen函数打开库文件,并指定打开方式dllope的的第一个参数为共享库的名称,将会在下面位置查找指定的共享库。 ①环境变量LD_LIBRARY_PATH列出的用分号间隔的所有目录。 ②文件/etc/ld.so.cache中找到转载 2010-03-10 11:46:00 · 1432 阅读 · 0 评论 -
想成为嵌入式程序员应知道的10个基本问题
C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要原创 2010-02-23 13:59:00 · 863 阅读 · 0 评论 -
C++构造函数的幕后工作
多年前学习C++的时候就知道每个类都有一个默认的构造函数,但是为什么要有这样的规则却一直不求甚解,汗一个。刚好最近在重新学习C++的内存模型,看看它到底做了么事?写一个简单的类:class CParentA{public: CParentA() {} public: int parenta_a; int parenta_b;原创 2010-02-22 15:51:00 · 975 阅读 · 0 评论 -
最新的25个最危险的编程错误
1. 跨站点脚本攻击(4)2. SQL注入(3)3. 经典缓冲区溢出(1)4. 跨站点请求伪造(7)5. 不正确的访问控制(授权)6. 在安全决策中依赖不可信的输入7. 不正确地将路径名限制为受限路径8. 上传危险类型的文件不受限9. 操作系统命令中特殊因素的处理不正确(操作系统命令注入)(5)10. 敏感信息未加密(6)11. 使用硬编码凭据(21)原创 2010-02-21 11:27:00 · 878 阅读 · 0 评论 -
在Linux下产生并调试core文件
先看看我用的是个什么机器:$ uname -aLinux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT 2004 i686 i686 i386 GNU/Linux再看看默认的一些参数,注意core file size是个0,程序出错时不会产生core文件了。$ ulimit -acore file size (block原创 2010-01-24 18:23:00 · 1064 阅读 · 0 评论 -
浅析Linux下core文件
当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。最常出现的,几乎所有C程序员都出现过的错误就是“段错误”了。也是最难查出问题原因的一个错误。下面我们就针对“段错误”来分析core文件的产生、以及我们如何利用core文件找到出现崩溃的地方。 何谓core文件 当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的原创 2010-01-24 18:19:00 · 843 阅读 · 0 评论 -
理解dup、dup和fcntl
<br />/dup函数的作用:复制一个现有的句柄,产生一个与“源句柄特性”完全一样的新句柄(也即生成一个新的句柄号,并关联到同一个设备)<br />//dup2函数的作用:复制一个现有的句柄到另一个句柄上,目标句柄的特性与“源句柄特性”完全一样(也即首先关闭目标句柄,与设备断连,接着从源句柄完全拷贝复制到目标句柄)//dup和dup2都是系统服务,window平台对应DuplicateHandle函数/* DUP.C: This program uses the variable old to save原创 2010-08-11 11:03:00 · 1741 阅读 · 0 评论