编译器Clang与GCC

GCC特性:除支持C/C++/ Objective-C/Objective-C++语言外,还是支持Java/Ada/Fortran/Go等;当前的Clang的C++支持落后于GCC;支持更多平台;更流行,广泛使用,支持完备。

Clang特性:编译速度快;内存占用小;兼容GCC;设计清晰简单、容易理解,易于扩展增强;基于库的模块化设计,易于IDE集成;出错提示更友好。

GCC特性:除支持C/C++/ Objective-C/Objective-C++语言外,还是支持Java/Ada/Fortran/Go等;当前的Clang的C++支持落后于GCC;支持更多平台;更流行,广泛使用,支持完备。

Clang特性:编译速度快;内存占用小;兼容GCC;设计清晰简单、容易理解,易于扩展增强;基于库的模块化设计,易于IDE集成;出错提示更友好。

检查内存泄漏的工具「Purify」和「Valgrind」

一般检查代码中内存泄漏的工具应具备以下功能:

是否使用了未初始化的内存。
是否使用已经释放了的内存。
使用超过malloc分配的内存空间。
对堆栈的非法访问。
申请的空间是否有释放。

推荐使用的内存泄漏工具有:在Windows上使用「Purify」,在Linux上使用「Valgrind」。

一般检查代码中内存泄漏的工具应具备以下功能:

是否使用了未初始化的内存。
是否使用已经释放了的内存。
使用超过malloc分配的内存空间。
对堆栈的非法访问。
申请的空间是否有释放。

推荐使用的内存泄漏工具有:在Windows上使用「Purify」,在Linux上使用「Valgrind」。