常见有关内存的笔试题
来源:互联网 发布:网络棋牌炸金花骗局 编辑:程序博客网 时间:2024/04/29 03:27
好几次碰见这样的笔试题了
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
请问运行Test 函数会有什么样的结果?
答:程序崩溃。
因为GetMemory 并不能传递动态内存,
Test 函数中的 str 一直都是 NULL。
strcpy(str, "hello world");将使程序崩
溃。
char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test 函数会有什么样的结果?
答:可能是乱码。
因为GetMemory 返回的是指向“栈内存”
的指针,该指针的地址不是 NULL,但其原
现的内容已经被清除,新内容不可知。
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)内存泄漏
void Test(void)
{
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL)
{
strcpy(str, “world”);
printf(str);
}
}
请问运行Test 函数会有什么样的结果?
答:篡改动态内存区的内容,后果难以预
料,非常危险。
因为free(str);之后,str 成为野指针,
if(str != NULL)语句不起作用。
- 常见有关内存的笔试题
- 一道有关内存泄漏的阿里巴巴JAVA工程师笔试题
- 有关字符串的笔试题
- 与结构体对齐有关的 分析内存分配的笔试题
- 常见的与内存有关的错误总结
- 常见的java笔试题
- 程序员常见的笔试题
- 一道有关数据类型的笔试题
- 网络有关笔试题
- 关于内存的笔试题
- 笔试_常见笔试题
- 一些常见的c/c++笔试题
- 一些常见的笔试题(一)
- 一些常见的笔试题(二)
- 一些常见的笔试题(三)
- 笔试中常见数据结构的题
- 常见的几个小笔试题
- 笔试题中常见的文件操作
- 女子邀数人殴打一对夫妻 数百人围观不敢制止
- Hibernate_组件关联
- 郑州300米渠沟被胶囊堆成“彩虹河”(图)
- python多线程编程(3): 使用互斥锁同步线程
- C++中多级指针的转换
- 常见有关内存的笔试题
- 涨了
- 在学习过程中遇到的问题
- Android中让应用程序自动安装到手机内存及判断应用程序是否安装在SDCard中
- POJ 2528 线段树+离散化
- 重男轻女的父母
- c# GegMessage使用方法
- UITableView多选删除,类似mail中的多选删除效果
- 执行repo sync 的时候,错误信息:error: Exited sync due to gc errors