试题一:
void GetMemory( char *p )
{
p = (char *) malloc( 100 );
}
void Test( void )
{
char *str = NULL;
GetMemory( str );
strcpy( str, "hello world" );
printf( str );
}
解答:
本题中传入中GetMemory( char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完
char *str = NULL;
GetMemory( str );
后的str仍然为NULL;
存在内存泄露,打印为空
试题二:
char *GetMemory( void )
{
char p[] = "hello world";
return p;
}
void Test( void )
{
char *str = NULL;
str = GetMemory();
printf( str );
}
解答:
char p[] = "hello world";
return p;
p[]数组为函数内的局部自动变量,在函数返回后,内存已经被释放。这是许多程序员常犯的错误,其根源在于不理解变量的生存期。
试题三:
void GetMemory( char **p, int num )
{
*p = (char *) malloc( num );
}
void Test( void )
{
char *str = NULL;
GetMemory( &str, 100 );
strcpy( str, "hello" );
printf( str );
}
解答:
存在2处问题:
本题中的Test函数中未对malloc的内存进行释放。
本题中的GetMemory避免了试题一的问题,传入GetMemory的参数为字符串指针的指针,但是在GetMemory中执行申请内存及赋值语句
*p = (char *) malloc( num );
后未判断内存是否申请成功,应加上:
if ( *p == NULL )
{
...//进行申请内存失败处理
}
试题四:
void Test( void )
{
char *str = (char *) malloc( 100 );
strcpy( str, "hello" );
free( str );
... //省略的其它语句
}
解答:
存在2处问题:
试题四存在与试题三同样的问题,在执行char *str = (char *) malloc(100);
后未进行内存是否申请成功的判断;
另外,在free(str)后未置str为空,导致可能变成一个“野”指针,应加上:
str = NULL;
核心技术类目
- 个人资料
-
- 访问:541477次
- 积分:8780分
- 排名:第393名
- 原创:291篇
- 转载:8篇
- 译文:0篇
- 评论:576条
- 文章搜索
- 博客专栏
解析系统架构设计师试题 文章:30篇
阅读:36077解析系统分析师试题 文章:29篇
阅读:128690
- 文章分类
- 系统架构师(38)
- 项目管理(33)
- Android(23)
- C/C++(27)
- 魅力思维(37)
- Database(11)
- GPS(5)
- J2ME(2)
- Java(12)
- SQLite3(3)
- Linux(19)
- Window(3)
- VC开发(3)
- 安装程序制作(1)
- 《深度探索c++对象模型》学习笔记(0)
- 互联网(10)
- 协议分析(5)
- 开发工具(2)
- 学习与思考(80)
- 手机开发(25)
- 新技术(10)
- 手机行业(5)
- 源码学习(11)
- 激情创业(5)
- 点滴生活(24)
- 生活百味(49)
- 百科解答(9)
- 程序人生(57)
- 系统分析(36)
- 职场风云(25)
- 计算机软考(121)
- 设计模式(0)
- 网络编程框架(1)
- 内存管理(0)
- 程序设计语言(1)
- 计算机系统(2)
- 无线通信(0)
- 阅读排行
- 程序员很少上《非诚勿扰》电视节目相亲之分析(46014)
- adb root错误信息adbd cannot run as root in production builds问题解决(13179)
- (程序员情感三部曲之一)找个程序员做老公,挺好!(11017)
- 2009年下半年11月份信息系统项目管理师上午试题答案(分析与解答)(第5次修订 修订时间:2010年03月14日02时02分)(10323)
- (程序员情感三部曲之二)程序员如何找女朋友(9651)
- Android版本与Linux内核版本的关系(8715)
- 裸考—歪理邪说通过系统分析师考试之五(分析2010上半年系统分析师上午试题21-25题)(8712)
- 裸考—歪理邪说解析系统分析师上午考试试题之七(分析2010上半年系统分析师上午试题32-36题)(7902)
- 成为江苏卫视《一站到底》节目站神之策略(7841)
- 裸考—歪理邪说通过系统分析师考试之四(分析2010上半年系统分析师上午试题16-20题)(7782)
- 评论排行
- 程序员很少上《非诚勿扰》电视节目相亲之分析(217)
- (程序员情感三部曲之一)找个程序员做老公,挺好!(50)
- 2009年下半年11月份信息系统项目管理师上午试题答案(分析与解答)(第5次修订 修订时间:2010年03月14日02时02分)(20)
- 一个技术工作者的四大核心价值理念(16)
- (程序员情感三部曲之二)程序员如何找女朋友(16)
- (程序员情感三部曲之三)程序员与女朋友相处之道(15)
- 考考码农们的想象能力(12)
- adb root错误信息adbd cannot run as root in production builds问题解决(11)
- 2011年上半年登陆美国市场上市科技企业知多少(10)
- 歪理邪说理论之2012年系统架构师软考成绩(8)
- 推荐文章