C 语言编程————经验之谈
1、C语言的项目内存管理很让人头疼,自始至终你要明白哪些内存应该要释放,哪些到最后才能释放,不然的话,就会出现一些堆被破坏的错误
2、每写一个函数一定要记得写它的测试程序,不管那个函数简单的还是复杂,不然的话,到最后会忙死你,有时还会犯一些低级的错误。这个教训我就犯过,写了一大堆Utility工具函数库,一个都没有测试,到了最后用的时候,大部分错误都是出自这里。
3、针对一些复杂的关键的容易犯错误的地方写一些LOG信息,屏幕和文件输出两种方式显示出来,这里无论用VC等IDE工具,还是纯GCC工具都是很好进行调试的。建议用log4c等一些开源工具进行LOG。
4、在对程序进行调试时,采用排除法,二分法,可以很快地找出程序中的错误。
文章出处:DIY部落(http://www.diybl.com/course/3_program/c++/cppsl/2008121/96901.html)
相关文档:
/***************************************************
* 函数说明: 判断当前path参数是否为一个可读的文件
* 函数返回: 0 - 文件刻度 1 - 权限拒绝 -1 -函数错误
* 参 数 : path 文件路径.
***************************************************/
int isReadFile(const char *path)
{
&nb ......
http://blog.csdn.net/hwz119/archive/2007/05/25/1625218.aspx
您是否做过这样一个项目,它要求您在内存中保存数目不定的若干不同对象?对于某些情况,二叉树是最佳选择,但在通常情况下,更简单的链表是显而易见的选择。
一个简化的问题示例
链表的难点在于必须复制链表处理函数来处理不同的对象 ......
import sun.misc.Signal;
import sun.misc.SignalHandler;
/***
* java信号处理demo
* @author jiang_qh
*
*/
public class SignalHandlerExample implements SignalHandler{
private SignalHandler oldHandler;
public void handle(Signal signal) {
System.out.println("Signal handler called for signal " ......
曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) )
[10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明:我们
将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰
符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++ ......
stroul,
strdup
snprintf()
atio
C中常用字符串操作函数
#include <string.h>
size_t strlen(const char *s) 测量字符串长度s的实际长度。
例如s[20]="abc",那么strlen(s)的结果是3,而不是20.这就是实际长度
char *strcat(const char *s1, const *s2) ......