笔试题(GetMemory)
void GetMemory2(char **p, int num)
{
p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
请问运行Test函数会有什么样的结果?
答:
(1)能够输出hello (2 )Test函数中也未对malloc的内存进行释放。(3)GetMemory避免了试题1的问题,传入GetMemory的.参数为字符串指针的指针,但是在GetMemory中执行申请内存及赋值语句
p = (char *) malloc( num );
后未判断内存是否申请成功,应加上: if ( *p == NULL ) {
...//进行申请内存失败处理
}
void Test(void)
{
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL)
{
strcpy(str, “world”);
printf(str);
}
}
请问运行Test函数会有什么样的结果?
答:执行 char *str = (char *) malloc(100); 后未进行内存是否申请成功的判断;另外,在free(str)后未置str为空,导致可能变成一个“野”指针,应加上: str = NULL;
【笔试题(GetMemory)】相关文章:
360笔试题目10-20
华为2017笔试题08-16
华为2017笔试试题08-10
桂林银行笔试题笔经10-21
QMS2007笔试审核知识模拟试题11-02
眼线笔类型-如何挑选眼线笔11-09
马克笔有哪些分类-马克笔的分类11-03
ps笔刷怎么安装08-27
唇线笔怎么用10-11
美甲笔如何保养10-07