有关内存管理的部分试题
来源:互联网 发布:java log4j 编辑:程序博客网 时间:2024/05/16 00:50
有关内存管理的部分试题
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)语句不起作用。
2. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?这 里,我期望应试者能提到内存碎片,碎片收集的问题,变量的持行时间等等。这个主题已经在ESP杂志中被广泛地讨论过了(主要是 P.J. Plauger, 他的解释远远超过我这里能提到的任何解释),所有回过头看一下这些杂志吧!让应试者进入一种虚假的安全感觉后,我拿出这么一个小节目:下面的代码片段的输 出是什么,为什么?
Char *ptr;
if ((ptr = (char *)malloc(0)) == NULL)
puts("Got a null pointer");
else
puts("Got a valid pointer");
这 是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。这就是上面的代码,该代码的输 出是“Got a valid pointer”。我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。得到正确的答案固然重要,但解决问题的方法和你做决定的基 本原理更重要些。
- 有关内存管理的部分试题
- 补充一下有关XFS Manager的内存管理部分
- 有关内存管理的一些问题
- 有关多线程和内存管理的学习
- Unity3D有关内存管理的资料网址
- 内存管理部分的几点思考
- 中兴面试题 有关内存的思考题
- 第三部分:内存管理
- OC中内存管理有关
- jvm堆内存管理有关
- Java程序设计中有关内存管理的其他经验
- java程序设计中有关内存管理的经验
- Cocos2d-x中内存管理有关的宏
- 有关C的学习笔记以及内存管理
- Cocos2d-x 中与内存管理有关的宏
- Cocos2d-x 中与内存管理有关的宏
- 有关C++中内存管理函数的使用和区分
- 内存管理面试题
- Qt treewidget 复选框
- 日本上游元器件行业概况与其影响
- 等你,执手渡流年(七夕)
- Java程序员面试中的多线程问题
- HDU 2426
- 有关内存管理的部分试题
- linux shell 中"2>&1"含义
- 普洱茶的仓储流程
- java反射取对象中的各表量值
- 1002. Anti-prime Sequences
- Speex 一个开源的声学回声消除器(Acoustic Echo Cancellation)
- 关于类型对象作为形参和返回值时的一些问题
- android架构介绍
- 英语练习A busy Family