IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    

developerWorks 中国  >  Linux  >

C/C++ 技术专题

developerWorks


指南和实践
内存泄漏检测
Linux 与 C
C/C++ 相关工具
用 C/C++ 开发应用



本专题汇集了 C/C++ 相关的技术文章和教程,内容包括 C/C++ 最佳实践、开发指南、开发工具以及相关应用开发。


指南和实践

  • C 编程最佳实践
    尽管 C 语言问世已近 30 年,但它的魅力仍未减退。C 语言继续吸引着众多的人们,他们为了编写新的应用程序,或者移植或维护现有的应用程序而必须学习新技能。
  • C++ 语言特性的性能分析
    本文从 C++ 的一些语言特性来分析影响性能的方面。
  • Linux 下 C++ 异常处理技巧
    处理 C++ 中的异常会在语言级别上遇到少许隐含限制,但在某些情况下,您可以绕过它们。通过本文学习各种利用异常的方法,开发出更可靠的应用程序。
  • 技巧:在 C/C++中如何构造通用的对象链表
    您是否做过这样一个项目,它要求您在内存中保存数目不定的若干不同对象?对于某些情况,二叉树是最佳选择,但在通常情况下,更简单的链表是显而易见的选择。
  • C 和 C++ 的矩阵库
    本文将介绍一些目前可在 Linux 环境中使用的开放源代码 C/C++ 矩阵库。具体讨论的库有三个:Meschach 库为 C 代码编写的项目提供例程,用于矩阵和向量的运算;Cooperware Matrix(CwMtx)库可用于 C++ 代码编写;Blitz 库为 C++ 提供可用整数、浮点数、复数和规范的用户定义的类型的 n 维数组类。
  • Boost 库中的实用工具类使用入门
    本文向您介绍了开源的 C++ 开发库——Boost 中较为有用的一些实用工具类的使用方法。通过使用这些实用工具类,您可以节省大量的代码维护成本。
  • 用 C99 进行开放源代码的开发
    C99 是什么?谁需要它?它可用了吗?Poter Seebach 讨论了 ISO C 标准的 1999 年修订版,着重于 Linux 和 BSD 系统上新特性的可用性。
  • 编写易于理解代码的六种方式
    对于一名开发人员,时间是最宝贵的资源。本文所要介绍的这六种编写可维护代码的方法可以保证让您节省时间和少受挫折:在编写注释上多花一分钟,会让您少受一小时研读代码的痛苦折磨。
  • Continuation 和高级流程控制
    流程控制通常非常简单:包括序列化、选择和迭代等过程。很多一直在使用这些基本控制结构的程序员都曾经经历过一段困难的时间来确定哪种流程控制是必需的。本文将简要介绍有关 continuation 的内容,并向您展示如何用最新的方法来考虑流程控制的问题。
  • 在 Linux 中处理来自共享对象的同步事件
    尽管在诸如 C++ 之类的高级语言中有效地利用共享内存并不简单,但是我们是可以克服这些内在困难的。本文将介绍两种在 Linux® 上用来使用共享内存的 C++ 设计模式,并给出了一些样例代码;这些方法非常有用,它们打开了更有效地进行进程间通信的大门。
  • 深入浅出VA函数
    本文主要介绍可变参数的函数使用,然后分析它的原理,程序员自己如何对它们实现和封装,最后是可能会出现的问题和避免措施。
  • 使用可重入函数进行更安全的信号处理
    如果要对函数进行并发访问,不管是通过线程还是通过进程,您都可能会遇到函数不可重入所导致的问题。在本文中,通过示例代码了解如果可重入性不能得到保证会产生何种异常,尤其要注意信号。引入了五条可取的编程经验,并对提出的编译器模型进行了讨论,在这个模型中,可重入性由编译器前端处理。


回页首



内存泄漏检测

  • 如何在 linux 下检测内存泄漏
    本文针对 linux 下的 C++ 程序的内存泄漏的检测方法及其实现进行探讨。其中包括 C++ 中的 new 和 delete 的基本原理,内存检测子系统的实现原理和具体方法,以及内存泄漏检测的高级话题。作为内存检测子系统实现的一部分,提供了一个具有更好的使用特性的互斥体(Mutex)类。
  • 一个跨平台的 C++ 内存泄漏检测器
    内存泄漏对于C/C++程序员来说也可以算作是个永恒的话题了吧。在Windows下,MFC的一个很有用的功能就是能在程序运行结束时报告是否发生了内存泄漏。在Linux下,相对来说就没有那么容易使用的解决方案了:像mpatrol之类的现有工具,易用性、附加开销和性能都不是很理想。本文实现一个极易于使用、跨平台的C++内存泄漏检测器。并对相关的技术问题作一下探讨。
  • 在 Linux 平台中调试 C/C++ 内存泄漏方法
    本文将从静态分析和动态检测两个角度介绍在 Linux 环境进行内存泄漏检测的方法,并重点介绍静态分析工具 BEAM、动态监测工具 Valgrind 和 rational purify 的使用方法。
  • C 语言中的指针和内存泄漏
    在使用 C 语言时,您是否对花时间调试指针和内存泄漏问题感到厌倦?如果是这样,那么本文就适合您。您将了解可能导致内存破坏的指针操作类型,您还将研究一些场景,了解要在使用动态内存分配时考虑什么问题。
  • 为 C/C++ 项目构建您自己的内存管理器
    代码的性能优化是一项非常重要的工作。经常可以看到,采用 C 或 C++ 编写的、功能正确的软件在执行时耗费大量的内存、时间、或者在最糟的情况下既耗内存又费时间。作为一名开发人员,可以使用 C/C++ 提供的功能强大的工具来改进处理时间,并且防止内存破坏,这些工具其中之一是控制如何在代码中分配或者释放内存。通过介绍如何针对特定的情况创建自己的内存管理器,本教程对内存管理的相关概念进行了揭秘。
  • 自我管理数据缓冲区内存
    C 程序设计语言定义了两个标准的内存管理函数:malloc() 和 free()。C 程序员经常使用那些函数在运行时分配缓冲区,以便在函数之间传递数据。然而在许多场合下,您无法预先确定缓冲区所需的实际大小,这对于构造复杂的 C 程序来说,可能会导致几个根本性的问题。在本文中,Xiaoming Zhang 倡导一种自我管理的抽象数据缓冲区。他概括地给出了抽象缓冲区的伪 C 代码实现,并详细介绍了采用这种机制的优点。


回页首



Linux 与 C

  • Tiny CC 发挥 C 语言的威力 之一: 介绍
    本文介绍 GNU/Linux 系统上最小的 C 语言编译器 Tiny C 编译器。Tiny C 编译器不仅仅是一个常规意义上的 C 语言编译器,它还使得用户可以像使用脚本语言一样使用 C 语言进行快捷的脚本编程。
  • GNU 编译器家族 GCC 内部探密: 探索 GCC 前端的内部结构
    我们在本文中说明 GCC 源码包中的例子编程语言 Treelang 的实现细节。主要目的在于辑此说明所谓 GCC 前端的编程方法。限于篇幅,本文只能略略讲一下 GCC 前端的内部结构的框架部分。本文中所涉及到的源程序均位于 GCC 源码包中的 gcc/ 目录和 gcc/treelang/ 目录下。本文的代码分析基于 GCC CVS 中的最新(2003 年六月)的开发版本。
  • 使用 gperf 实现高效的 C/C++ 命令行处理
    GNU 的 gperf 工具是一种 “完美的” 散列函数,可以为用户提供的一组特定字符串生成散列表、散列函数和查找函数的 C/C++ 代码。通过本文学习如何使用 gperf 实现 C/C++ 代码中高效的命令行处理。
  • 使用源代码将 Glibc 升级到 2.6
    本文介绍了一种使用源代码的方式升级系统标准动态库到 Glibc2.6 的方法。该方法是安全的,即使遇到升级失败,也能把系统恢复为原来的状态。
  • 覆盖 GNU C 库 ― 轻而易举
    一种调试 glibc 函数的好方法是用您自己的版本覆盖所关注的函数。在没有root 许可权和不必重新编译 libc 源代码的情况下就可以完成这个任务。想象一下编写您自己的 open() 版本该有多激动啊!
  • 程序的链接和装入及Linux下动态链接的实现
    程序的链接和装入存在着多种方法,而如今最为流行的当属动态链接、动态装入方法。本文首先回顾了链接器和装入器的基本工作原理及这一技术的发展历史,然后通过实际的例子剖析了Linux系统下动态链接的实现。了解底层关键技术的实现细节对系统分析和设计人员无疑是必须的,尤其当我们在面对实时系统,需要对程序执行时的时空效率有着精确的度量和把握时,这种知识更显重要。


回页首



C/C++ 相关工具

  • Linux on Power 上的调试工具和技术
    调试是一项主要的软件开发活动,作为应用程序开发人员,您无法避免对程序进行调试。有效的调试不仅能缩短软件开发周期,而且可以节省成本。本文简要介绍了在用户空间的 C/C++ 和 Java 应用程序中查找 bug 的技术,并介绍了一些可以在 Linux for POWER 架构上使用的调试技术。
  • 便利的开发工具-log4cpp快速使用指南
    log4cpp是个基于LGPL的开源项目,是基于优秀的日志处理跟踪项目Java语言的log4j移植过来的。
  • 使用 gperf 实现高效的 C/C++ 命令行处理
    GNU 的 gperf 工具是一种 “完美的” 散列函数,可以为用户提供的一组特定字符串生成散列表、散列函数和查找函数的 C/C++ 代码。通过本文学习如何使用 gperf 实现 C/C++ 代码中高效的命令行处理。
  • 用 Eclipse 平台进行 C/C++ 开发
    我们将概述如何在 C/C++ 开发项目中使用 Eclipse 平台。尽管 Eclipse 主要是一个 Java 开发环境,但其体系结构确保了对其它编程语言的支持。在本文中,您将学习如何使用 C/C++ 开发工具箱(C/C++ Development Toolkit,CDT),它是可用于 Eclipse 的最佳 C/C++ 工具箱。
  • 使用 Eclipse C/C++ Development Toolkit 开发应用程序
    在本文中,您将开始使用 Eclipse C/C++ Development Toolkit (CDT)。我们将构建一个 C++ 编写的简单应用程序,使用 CDT 和 C++ Standard Template Library (STL) 简化构建过程并且利用 C++ 的一些强大功能。
  • 将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT
    本文简明扼要地介绍了将 Microsoft Visual Studio C/C++(MSVC)项目迁移到 Eclipse 的步骤,比较和对照了 MSVC 和 Eclipse CDT 的优点。
  • 用于 PowerPC 上的 Linux 的五个易用的性能分析工具
    本文介绍的是 Performance Inspector,其中包括一套用于 Linux 的性能分析工具。作者介绍了如何下载和安装所需要的软件和工具以及如何收集性能分析数据。她还给出了五个基本工具的详细使用方法,您可以用它们来分析 C/C++ 和 Java 应用程序的性能,以及您的系统的整体性能。


回页首



用 C/C++ 开发应用

  • 用C语言实现Ping程序功能
    大部分人用ping命令只是作为查看另一个系统的网络连接是否正常的一种简单方法。在这篇文章中,作者将介绍如何用C语言编写一个模拟ping命令功能的程序。
  • 用C语言扩展Python的功能
  • Linux 上实现双向进程间通信管道
    本文阐述了一个使用 socketpair 系统调用在 Linux 上实现双向进程通讯管道的方法,并提供了一个实现。
  • Linux Socket 编程,第一部分
    本教程展示如何开始使用套接字编程。重点集中于 C 和 Python,本教程指导您完成一个回显(echo)服务器和客户机(它们通过 TCP/IP 来连接)的创建过程。它描述了基础的网络、层和协议概念,同时提供了丰富的示例源代码。
  • Linux Socket 编程,第二部分
    该中级教程是在 Linux Socket 编程第一部分的基础上的展开,主要集中在用户数据报协议 (UDP)方面,向读者展示如何用 C 和 Python 写 UDP sockets 应用程序,对于其他语言也适用。
  • 在 C 应用程序中嵌入 Perl 脚本
    您是否曾经想要一个向应用程序添加脚本元素(scriptable element)的快速方式?在应用程序中嵌入现有语言是与原来的系统合并的一个最简单且最有效的方式。得到的好处是,用既定的语言以灵活的方式扩展应用程序的功能,使用户不必重新构建就可以使用扩展的功能。在本教程中,您将学习在应用程序中嵌入脚本语言的过程。您将看到如何构建应用程序,以及如何提供支持完整参数和返回值支持的包装器函数(wrapper function)。
  • Linux下免费数据库PostgreSQL开发入门
    本文介绍使用 C/C++ 结合数据库自带的 libpq 和 libPq++ 库来开发 Linux 下有名的免费数据库 PostgreSQL,详细描述了怎样使用开发库来操作数据的步骤和流程。


回页首


文档选项

未显示需要 JavaScript 的文档选项


更多资源
LPI 认证系列教程
Windows 到 Linux 之旅
Linux 教程
Linux 技巧
Linux shell 专题
Linux 安全专题
Linux 嵌入式系统
Linux 文件系统
Rational 之 C/C++ 开发篇

  特别推荐
通过 LPI 201 考试系列教程快速学习 Linux
developerWorks 应用开发源动力
Eclipse 项目资源中心
PHP 项目资源中心


    关于 IBM 隐私条约 联系 IBM 使用条款