博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一级指针(char *)易错模型分析
阅读量:4212 次
发布时间:2019-05-26

本文共 698 字,大约阅读时间需要 2 分钟。

(1) char *(字符串)做函数参数出错模型分析

 比如代码如下:

void copy_str21(char *from, char *to){	if (*NULL = '\0' || *to!=’\0’)  //红色的地方会出错,因为别人可能将null传给from指针	{		Printf(“func copy_str21() err\n”);        return; 	}    	for (; *from!='\0'; from++, to++)	{		*to = *from;	}	*to = '\0';}//字符串逆序int main(){	//char p[1024] ={0};    char *p  ={0}; p = NULL;	char to[100];	copy_str21(p, to);}

注意,如果传给from指针的是null, 那么在使用*from的时候就会出错,因为,需要先判断from是不是null. 总之,不要相信主调函数给你传的内存空间。

 

(2) 越级 (语法级别的越界)

  举个例子,比如:

 char buf[3] = "abc";  //定义成buf[4]才对,因为这是字符串初始化字符数组,默认加’\0’(c风格的字符串)

 

(3) 不断修改指针变量的值

   

这个free(a)会出现问题,因为a已经不是指向这块内存区域的首地了,很多时候,这是产生bug的根源

 

(4)  c语言中栈中分配的内存

注意, c语言中,栈中可以分配内存,但是在栈中分配的内存,一离开其作用区域,就会被释放了,特别要注意这一点,比如说要在栈中分配数组内存的地方,一定要格外小心。

 

 

转载地址:http://xmzmi.baihongyu.com/

你可能感兴趣的文章
Important Changes to Oracle Database Patch Sets Starting With 11.2.0.2 [ID 1189783.1]
查看>>
Oracle RAC 平台下 Patch 安装与卸载 步骤
查看>>
Oracle Database 11gR1 和 10gR2 ASM Best Practices 说明文档
查看>>
ASM Concepts Quick Overview [ID 1086199.1]
查看>>
PowerDesigner 业务处理模型( BPM ) 说明
查看>>
PowerDesigner 企业架构模型 ( EAM ) 说明
查看>>
PowerDesigner 正向工程 和 逆向工程 说明
查看>>
PowerDesigner 模型文档 说明
查看>>
PowerDesigner 系列 小结
查看>>
Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
查看>>
Oracle sessions,processes 和 transactions 参数 关系 说明
查看>>
RMAN 备份报错 RMAN-06207 RMAN-06208 解决方法
查看>>
[INS-35172] Target database memory (XXMB) exceeds the systems available shared memory ({0}MB) 解决方法
查看>>
深入理解 OUI(Oracle Universal Installer)
查看>>
Oracle LOB 详解
查看>>
磁盘性能 -- IOPS 和 吞吐量 说明
查看>>
Oracle Heap size XXK exceeds notification threshold (2048K) 解决方法
查看>>
Oracle Gloden Gate 系列三 -- GG 支持与不支持的对象类型与操作 说明
查看>>
PowerDesigner PDM 生成SQL脚本 去除 引号 方法
查看>>
Oracle Golden Gate 系列四 -- GG 安装 与 卸载 理论知识
查看>>