typedef struct _VECTEX { int start; int number; LINE *neighbor; struct _VECTEX* next; }VECTEX; VECTEX* create_new_vectex( int start ) { VECTEX* pVector = (VECTEX *)malloc( sizeof( struct _VECTEX)); if( NULL == pVector ) exit(-1);//这个地方大伙儿怎么处理的,我用exit(-1),但是觉得不大好。如果内存没有正常获得,要是遇到问题就直接终止了。 pVector->start = start; pVector->next = NULL; pVector->neighbor = NULL; }
我个人的建议如果pVector出错了,那基本可以确定内存或者硬盘有地方损坏.所以不要做防错处理.
做为强迫症 int a=1+1;if(a!=2){...;/*如果执行到这里,基本断定是CPU损坏不是吗.*/}
哈。。。。C的问题我爱回答。。。
这里我说两个观点:
1、@leyaya.cn 大部分观点我是认同的,我同时要补充的是,在malloc这种分配或和OS打交道的函数,应该包装一下,对于出现异常,按照异常等级来划分,决策是否要退出。例如不是自身代码运行环境的空间申请,而是新任务的追加,没必要进程退掉,无非拒绝服务。
2、内存分配不出,不管是小概率还是大概率,只要是和OS对接的,就应该有错误或异常处理函数。无非手段好,还是坏的问题。
系统设计,边界感很重要。边界越明确,在该系统切换到其他环境下,或者调整和环境的接口时,对内部的逻辑影响就越小,测试也容易(SIMU),改动维护也越方便。
你想让它干嘛就干嘛,你要在这里直接退出,也行,就是体验不好而已。